PHP 関数に問題があります: mysql_real_escape_string
私のテスト文字列:
@,&!#$%^*()_+' "\/
次のように、このデータを mySql データベースに追加します (要するに):
$str = mysql_real_escape_string($str); $sql = "INSERT INTO テーブル(会社) VALUES('".$str. "')";
DB には次のように格納されます。
@,&!#$%^*()_+\' \"\\/
しかし、問題は SELECT ステートメントでこのデータを見つけることです。
名前のような会社を見つけたい
' "
私のSELECT:
SELECT; 動作していません。company
FROMtable
WHEREcompany
LIKE '%\' "%'; SELECTcompany
FROMtable
WHEREcompany
LIKE '%\\' \\"%';
これは機能します:
SELECT `company` FROM `table` WHERE `company` LIKE '%\\\' \\\\"%'; と SELECT `company` FROM `table` WHERE `company` LIKE '%\\\\\\\' \\\\\\\"%'
しかし、なぜこれが機能するのかわかりません:(。
私の質問は次のとおりです。
なぜそんなに多くのスラッシュを追加する必要があるのですか?
PHPで正しいクエリを作成する方法:
$query = '\' "'; '%'.mysql_real_escape_string($クエリ).'%' 結果: '%\' \"%' '%'.mysql_real_escape_string(mysql_real_escape_string($クエリ)).'%' 結果: '%\\\' \\\"%' '%'.mysql_real_escape_string(mysql_real_escape_string(mysql_real_escape_string($query))).'%' 結果: '%\\\\\\\' \\\\\\\"%'
最後の 1 つだけがうまく機能します。