0

mysql での検索に関して問題があります。以下は私の質問です。

SELECT * FROM table WHERE name LIKE "%admin\'s%";

このクエリを実行すると、ゼロのデータが返されます。

実際には、「管理者」がデータベースに保存されています。この「\」は、SQL インジェクションを防ぐためのものです。私はmysql_real_escape_stringSQLインジェクションを防ぐために使用しました。

しかし、変数にaddslashesを3回使用すると機能します。

したがって、以下のクエリは機能しています。

SELECT * FROM table WHERE name LIKE "%admin\\\\\\\'s%";

上記のクエリは、admin のような名前のデータを返します。

私はどこが間違っているのかわかりません。

4

1 に答える 1

1

DB管理者にこのようなデータを入れるべきではありません..おそらく、文字列を二重にエスケープしました(サーバーでmagic_quotesが有効になっていないかどうかを確認してください)。

あなただけなら

INSERT ... username = "admin\'s";

データベースにユーザー名の値 admin's があるため、データベースからスラッシュを削除すると、最初のクエリが機能するはずです。

于 2010-01-20T10:52:11.363 に答える