echo $ _GET ['id']没有显示任何内容

时间:2013-05-09 18:09:39

标签: php mysql

我有一个页面,用户在其中选择具有唯一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,在我显示的网址中显示:

  

“recipe.php?ID =”

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

3 个答案:

答案 0 :(得分:2)

以下echo语法不正确:

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->fetch_assoc()

之后将其拉入
$recipe_id = $recipes['id'];

答案 1 :(得分:1)

首先,在对数据库进行任何查询之前,请确保您在查询中使用的所有$变量都被转义,因为您可以非常容易地被黑客攻击。逃避这样:

$_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只是一个空变量,首先检查一下:)。

答案 2 :(得分:-1)

// 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">';

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