0

機能しないユーザー定義の SQL クエリを作成しました。ユーザーは入力フィールドに検索文字列を入力し、送信して検索結果を表示できるはずですが、データベースにあることがわかっているものを検索するたびに、「where句」に不明な列「x」が表示されます" エラーメッセージ。

問題を解決するのを手伝ってくれませんか? これまでに書いたコードは次のとおりです...

...
mysql_select_db("mydb", $c);
$search = $_POST['search'];

$rslt = mysql_query("SELECT * FROM mytable
WHERE 'mycolumn' RLIKE $search");

while($row = mysql_fetch_array($rslt))
  {
  echo $row['myrow'];
  echo "<br />";
  }

if (!$row)
  {
  die('uh oh: ' . mysql_error());
  }

?>
4

3 に答える 3

4

コードを次のように変更します
。1) 列名の周りの引用符をバッククォートに変換します。
2) $search を単一のクォートで囲み、文字列にします。

 $rslt = mysql_query("SELECT * FROM mytable WHERE `mycolumn` RLIKE '{$search}'");
于 2010-08-22T17:01:05.313 に答える
1

これは、変数 $search を文字列として読み取るように変更するだけで確実に役立ちます。つまり、次の$search ようになります

$rslt = mysql_query("SELECT * FROM mytable WHERE mycolumn RLIKE '$search'");
于 2011-04-09T23:15:26.793 に答える
0

セキュリティとパフォーマンスについていくつか追加したいと思います。

ユーザー入力 (GET、POST、または Cookie データ) を直接 SQL クエリに入れるのは安全ではありません。これは、 SQL インジェクションと呼ばれる深刻なセキュリティ上の問題です。これを回避するには、mysql_real_escape_string()関数を使用します。

また、SELECT * FROM mytable ...良い習慣ではありません。すべてが次の場合でも、必要なすべての列を明示的にリストすることをお勧めします。

SELECT col1, col2, col3, col4, col5 FROM mytable ...
于 2010-08-22T18:12:27.117 に答える