1

我正在尝试根据表单上的用户输入从我的数据库中返回一个值。当我使用一个值运行代码时,它可以工作,但是当我输入变量时,它不会。我确定这很简单,但我就是不明白?

这是有效的代码:

$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>";
}
4

3 回答 3

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);

然后,如果您仍然遇到问题,请提供记录的值。

于 2013-05-23T17:51:23.127 回答
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");

我在我的一个代码中有这个并且它有效。

于 2013-05-23T18:05:25.963 回答
-1

将您的第二行更改为:

$sql_beam = mysqli_query($link,"SELECT cost_ft FROM Beams WHERE number = '". $beam_num ."'");
于 2013-05-23T17:50:42.563 回答