我有一个页面,用户在其中选择具有唯一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 =”
表中有数据,所以我做错了什么?
答案 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">';
将您回显表单的行更改为类似的内容...您之前尝试回显两次(回声中的回声)...但这有效。