我试图根据表单上的用户输入从数据库中返回一个值。 当我使用一个值运行代码时它可以工作,但是当我输入变量时它没有。我确信这很简单,但我不明白吗?
以下是有效的代码:
$sql_beam = mysqli_query($link,"SELECT cost_ft FROM Beams WHERE number = '201'");
while($row = mysqli_fetch_array($sql_beam))
{
echo "<p>" . $row['cost_ft'] . "</p>";
echo "<br>";
}
当我将其更改为此时,它不会:
$beam_num = $_POST['Beam Number'];
$sql_beam = mysqli_query($link,"SELECT cost_ft FROM Beams WHERE number = '$beam_num'");
while($row = mysqli_fetch_array($sql_beam))
{
echo "<p>" . $row['cost_ft'] . "</p>";
echo "<br>";
}
答案 0 :(得分:4)
然后$_POST['Beam Number']
为空。
此外,您不应该将任何用户输入(例如获取数据的帖子)直接放入查询中。谷歌sql注入以及如何防止它。
尝试调试$_POST['Beam Number']
。你应该看到它是空的,然后你必须找出它为空的原因。
编辑如果有值,请首先将查询字符串放入变量中调试出来。
error_log($beam_num);
$query = "SELECT cost_ft FROM Beams WHERE number = '$beam_num'";
error_log($query);
$sql_beam = mysqli_query($link,$query);
然后,如果您仍然遇到问题,请提供记录的值。
答案 1 :(得分:1)
查询中的变量在用大括号括起来时效果最好:
$beam_num = $_POST['Beam Number'];
$sql_beam = mysqli_query($link,"SELECT cost_ft FROM Beams WHERE number = '{$beam_num}'");
while($row = mysqli_fetch_array($sql_beam))
{
echo "<p>" . $row['cost_ft'] . "</p>";
echo "<br>";
}
那应该解决问题,如果没有,那就试试这个:
$sql_beam = mysqli_query($link,"SELECT cost_ft FROM Beams WHERE number = $beam_num");
我在我的一个代码中有这个,但它确实有用。
答案 2 :(得分:0)
将第二行更改为:
$sql_beam = mysqli_query($link,"SELECT cost_ft FROM Beams WHERE number = '". $beam_num ."'");