1

フォームからのユーザー入力を使用して、MySQL データベース テーブル内の複数の列を検索する際に問題が発生しています。

データベース内のテーブルは vehicle と呼ばれ、年、メーカー、モデル、オプションの 4 つのフィールド/列があります。

ユーザーは、$input 変数に入れたフォームから検索条件を入力します。

以下は動作しない私のコードです。ブール値のエラーを返します:

(Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given)

$query = ("SELECT * FROM vehicles WHERE year LIKE '%$input%' OR make LIKE '%$input%' OR model LIKE '%$input%' OR option LIKE '%$input%'");

$result = mysql_query($query);

それでも、クエリから最後の OR を削除すると、問題なく動作しますが、年、メーカー、およびモデル フィールドのみを検索します。

$query = ("SELECT * FROM vehicles WHERE year LIKE '%$input%' OR make LIKE '%$input%' OR model LIKE '%$input%'");

$result = mysql_query($query);

4 つのフィールド/列すべてを検索するクエリを取得するにはどうすればよいですか? 私は何が欠けていますか?

テーブル全体 (テーブル内のすべての列) でユーザーの入力を検索する簡単な方法はありますか?

あなたが私に与えることができるどんな助けにも本当に感謝します.

4

1 に答える 1

3

「オプション」は mysql の予約語です。こちらを参照してください。そのため、クエリは実際には失敗し、リソースではなくブール値の false を返します。列の名前を変更するか、このように `` で囲みます

$query = ("SELECT * FROM vehicles WHERE year LIKE '%$input%' OR make LIKE '%$input%' OR model LIKE '%$input%' OR `option` LIKE '%$input%'");

また、 SQL インジェクションに対して安全であるように、必ず適切なエスケープを使用してください。

于 2012-11-18T15:21:13.433 に答える