PHP 関数に問題があります: mysql_real_escape_string
私のテスト文字列:
@,&!#$%^*()_+' "\/
次のように、このデータを mySql データベースに追加します (要するに):
$str = mysql_real_escape_string($str);
$sql = "INSERT INTO テーブル(会社) VALUES('".$str. "')";
DB には次のように格納されます。
@,&!#$%^*()_+\' \"\\/
しかし、問題は SELECT ステートメントでこのデータを見つけることです。
名前のような会社を見つけたい
' "
私のSELECT:
SELECT; 動作していません。companyFROMtableWHEREcompanyLIKE '%\' "%'; SELECTcompanyFROMtableWHEREcompanyLIKE '%\\' \\"%';
これは機能します:
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 つだけがうまく機能します。