0

LIKE selectクエリを実行しようとしているときに、少し問題が発生します。これが私のコードです:

$products = mysql_query("SELECT * FROM product WHERE 
                         prod_name LIKE '%" . $search_text . "%'")
            or die(mysql_error());

どの$search_textがユーザー入力です。テスト用に「sony」テキストを入力して実行しようとすると、次のようなエラーメッセージが表示されました。

Unknown column 'sony' in 'where clause'

どこに間違いがあるのか​​わかりません。誰かが私に何が悪いのか見せてもらえますか?

あなたの助けをどうもありがとう!

トニー

4

4 に答える 4

1

クエリが無効です:

$products = mysql_query("SELECT * FROM product WHERE prod_name LIKE '%" . $search_text . "%'") or die(mysql_error());

に置き換え=ますLIKE

編集:
Okaay。今、あなたはそれを変更しました。問題はまだ解決しませんか?

推測させてください...あなた$search_textは周囲に逃げてい''ますか?

その値をエコーし​​て、何が得られるかを確認してください。のようなものを解析している可能性がありますLIKE '%'sony'%'

その場合、値が自動的にエスケープされる場合は、次のいずれかを実行できます。

$search_text = trim($search_text, "'");

または

$search_text = substr($search_text, 1, (strlen($search_text) - 2));
于 2012-04-20T08:15:47.290 に答える
0

これは単なる推測ですが

変数の周りにバッククォートがある可能性があります$search_text。クエリをもう一度チェックし、変数がバックティックではなく一重引用符または二重引用符でラップされていることを確認します。

バックティック`

于 2012-04-20T08:26:31.847 に答える
0

A. あなたは自分の価値観をサニタイズしたと思います

試す

$searchText = mysql_real_escape_string ( $search_text );
$products = mysql_query ( "SELECT * 
        FROM product WHERE
        prod_name LIKE '%" . $searchText . "%'" ) or die ( mysql_error () );

B. double%の使用は効率的な検索方法ではありません。try を使用する方LIKE '" . $searchText . "%'"が良いアプローチです 

C.実行var_dump($searchText)して、期待どおりの正確なデータを出力していることを確認します

于 2012-04-20T08:38:37.917 に答える
0

この行からアイデアを得て、私は自分のデータベースで実行して、私のために働いてみました

"select * from product where prod_name like('%".$search_text."%')"

これがあなたを助けることを願っています。

于 2012-04-20T08:41:14.613 に答える