2011-07-06 12 views
1
のような検索キーワード

検索キーワードでデータベーステーブルをクエリしようとしました。私のSQLは以下の通りです:MySQLクエリ:%

$キーワードは、PHPのフォームのPOSTデータからである
SELECT * FROM some_table WHERE some_name LIKE '%$keyword%' 

。 $キーワードはすでにreal_escape_string機能によって処理されています。私は$キーワードがであり、すべてのレコードが選択されていることがわかります。コンテンツ内のsome_nameフィールドを検索するにはどうすればよいですか?

答えて

5

manualで説明したようにあなたは、リテラル%をエスケープする必要があります。

SELECT * FROM some_table WHERE some_name LIKE '%\%%'; 

EDIT:それは単一文字のシンボルだとしてはまた、あなたが_文字を同じようにエスケープする必要があることに注意をワイルドカード。

+0

%をエスケープする必要がありますが、なぜreal_escape_stringは私のために%をエスケープしないのですか? – Raptor

+2

real_escape_stringはLIKE文で文字列を使用していることを知りました。標準的なSQLの安全性のために逃げるだけです。 – Flimzy

1

あなたはキーワードで\%