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']は空です。

また、get data の post などのユーザー入力をクエリに直接入れてはいけません。Google 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");

私は自分のコードの1つにそれを持っていて、うまくいきました。

于 2013-05-23T18:05:25.963 に答える
-1

2 行目を次のように変更します。

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