在mysqli_query中使用变量?

时间:2013-05-23 17:49:14

标签: php mysql

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

以下是有效的代码:

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

3 个答案:

答案 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 ."'");