【问题标题】:echo $_GET['id'] not displaying anythingecho $_GET['id'] 不显示任何内容
【发布时间】:2023-03-20 19:12:02
【问题描述】:

我有一个页面,用户在其中选择具有唯一 ID 的食谱,然后他们被发送到另一个页面,该页面显示该食谱的信息,但没有显示任何内容。

$recipes = mysql_query("
        SELECT DISTINCT `name`, `step1`, `step2`, `step3`, `image`, `reference`
        FROM `recipe` r
        INNER JOIN `recipe_ingredients` ri
        ON r.id = ri.recipe_id
        WHERE ri.ingredient_id IN (".$ingredient1.",".$ingredient2.",".$ingredient3.")
    ");

这是主页上的查询,它允许用户选择一组成分,然后从中检索食谱。

echo '<form action="recipe.php?id=<?php echo $recipe_id;?>" method="POST">';
        echo '<input id="search" name="Look" type="Submit" value="Look" >';
        echo '</form>';

在每个配方下都有一个用户按下的按钮,这会将用户发送到特定的配方。

$sql = mysql_query("SELECT `name`, `image`
FROM `recipe` 
WHERE `id` = ".$_GET['id']." LIMIT 1");

这是我在结果页面 (recipe.php) 上运行的查询

在我运行的页面下方。

<?php
echo $_GET['id'];
?>

它没有显示 ID,在我显示的 url 中是这样的:

"recipe.php?id="

表格中有数据,我做错了什么?

【问题讨论】:

  • 您的&lt;form&gt; 正在使用POST;您需要以$_POST['id'] 的身份访问变量,或者将表单的方法更改为 GET
  • 我没有看到你在任何地方设置$recipe_id
  • @SamuelCook 应该是别的吗?
  • 你应该在那个 sql 语句中参数化你的变量。
  • @Lawrence:我好像记得I was helping you, with extended notes in chat 而你没有回复。请注意回复所有帮助您的人,尤其是如果您未在此处提供答案。

标签: php mysql


【解决方案1】:

以下回显语法不正确:

echo '<form action="recipe.php?id=<?php echo $recipe_id;?>" method="POST">';

应该是:

echo '<form action="recipe.php?id='.$recipe_id.'" method="POST">';

我看不出你在哪里设置$recipe_id,这似乎是你问题的根源。

目前尚不清楚您试图从哪里检索难以捉摸的$recipe_id

如果您试图从$recipes 中提取它,那么您应该将它包含在您的 sql 语句中:

SELECT `id`,....

然后在您的$recipes-&gt;fetch_assoc() 之后将其拉入:

$recipe_id = $recipes['id'];

【讨论】:

  • 我可能做错了,但你的意思是这样吗? while ($recipe = mysql_fetch_assoc($recipes)) { $recipe_id = $recipes['id'];
  • $recipe_id = $recipe['id']; $recipe 不是 $recipes。但是是的。
  • 它现在可以工作,但我必须在表单方法中使用 POST 并在 recipe.php 的查询中使用 GET。还是谢谢XD
【解决方案2】:

首先,在对数据库进行任何查询之前,请确保您在查询中使用的所有 $variables 都已转义,因为您很容易被黑客入侵。像这样逃跑:

$_GET['variable'] = mysql_real_escape_string($_GET['variable']);

整数可以这样转义

$_GET['variable'] = (int) $_GET['variable'];

您做错了,您可以将 recipe_id 添加为隐藏输入字段,然后在提交表单后阅读。 这是示例表单。

<form action="/recipe.php" method="POST">
    <input type="hidden" name="recipe_id" value="<?= $recipe_id ?>" />
    <input id="search" name="Look" type="Submit" value="Look" />
</form>

提交表单后,您可以执行以下操作:

$recipe_id = (int) $_POST['recipe_id'];
$sql = mysql_query("SELECT `name`, `image` FROM `recipe` WHERE `id` = $recipe_id LIMIT 1");

但我认为您的主要问题是表单中的 $recipe_id 只是一个空变量,请先检查:)。

【讨论】:

    【解决方案3】:
    // change this
    echo '<form action="recipe.php?id=<?php echo $recipe_id;?>" method="POST">';
    // to this
    echo '<form action="recipe.php?id=' . $recipe_id .'" method="POST">';
    

    将您回显表单的行更改为类似这样的内容...您之前尝试回显两次(在回显中回显)...但这有效。

    【讨论】:

    • 他不是在说recipe.php?id=&lt;?php echo $recipe_id;?&gt; 部分吗?
    • @DannyHearnah 问题不是 100% 清楚,但我想是的...更新了我的答案以反映这一点。
    猜你喜欢
    • 2015-09-04
    • 1970-01-01
    • 1970-01-01
    • 2019-03-08
    • 1970-01-01
    • 2016-06-15
    • 1970-01-01
    • 1970-01-01
    • 2012-09-29
    相关资源
    最近更新 更多