2012-01-05 3 views
1

私はパーセント記号を検索するSQL文を取得する方法は?

"SELECT catelogue.ARTIST, catelogue.TITLE, catelogue.`CAT NO.`, 
catelogue.FORMAT,catelogue.`IMAGE PATH` 
FROM catelogue 
WHERE catelogue.TITLE LIKE '%$search%'" 

は、今私はあなたのパーセントがあなたのワイルドカードであるSQLで理解しますが、これは、CDのタイトルですので、私は今、100%の夏を検索するための検索を必要とする私のデータベースを検索されたSQL文を持っています。

パーセント記号が他のワイルドカードに影響しないようにする方法はありますか?

編集:私はこれを使用している場合

だから

$search = addcslashes(mysql_real_escape_string($search), '%_'); 

が、その後

$search = preg_replace("/[^a-zA-Z 0-9\/\\+\.,:?-]+/", "", $search) 

を交換し、mysql_real_escape_stringのと併せて使用すること置き換えるプリプレグできるプリプレグの必要はありますか?

答えて

3

\%はエスケープされた "%"文字です。

編集

PHP:一般的に使用されている

$search = "100\% Summer"; 

string addcslashes (string $str , string $charlist)

$search = "100% Summer"; 
$search = addcslashes($search, '%_'); 

は、SQLインジェクションを防ぐためにstring mysql_real_escape_string (string $unescaped_string [, resource $link_identifier ])を使用することを忘れないでください。だから、最終的なコードのかもしれないが、次のようになります。

$search = "100% Summer"; 
$search = addcslashes(mysql_real_escape_string($search), '%_'); 
+0

'addslashes'は、単一引用符( ')に、スラッシュ、二重引用符(")、バックスラッシュ(\)とNULを追加します。 – deceze

+0

@decezeは、あなたが右、私のミスを修正。 –

0

あなたはところで、バックスラッシュ

$search = str_replace('%', '\%', $search); 

... 

WHERE catelogue.TITLE LIKE '%$search%' 

とパーセント記号をエスケープすることができ、あなたの$searchは、ユーザの入力から来ている場合は、あなたのコードはSQL injectionに対して脆弱です。

+0

は、いや、私はSQLインジェクションについて知っています誰かが私のテーブルを落としてpreg replace関数を実行しています – Mark

+0

@user SQLインジェクションに対するpreg replace関数? – deceze

+1

@deceze:貧弱な人のサニタイズ:-) –

1
SELECT catelogue.ARTIST, catelogue.TITLE, catelogue.`CAT NO.`, 
catelogue.FORMAT,catelogue.`IMAGE PATH` 
FROM catelogue 
WHERE catelogue.TITLE LIKE '%100\% Summer%'; 
関連する問題