ホームページ > データベース > mysql チュートリアル > クエリおよび LIKE ステートメントで MySQL ワイルドカード文字を適切にエスケープする方法

クエリおよび LIKE ステートメントで MySQL ワイルドカード文字を適切にエスケープする方法

DDD
リリース: 2024-12-05 04:45:11
オリジナル
443 人が閲覧しました

How to Properly Escape MySQL Wildcard Characters in Queries and LIKE Statements?

MySQL のエスケープ可能文字のエスケープ

MySQL には、複数の入力に一致するワイルドカードとみなされる文字のセットが含まれています。これらの文字には、% (パーセント) と _ (アンダースコア) が含まれます。 mysql_real_escape_string() は、SQL クエリに含めるためにほとんどの文字のエスケープを処理するように設計されていますが、これらのワイルドカードには対応していません。

ユーザー入力を完全にエスケープし、これらの文字がメタ文字として解釈されないようにするには、次のことをお勧めします。 mysql_real_escape_string() 関数を addcslashes() 関数と組み合わせて使用​​します。

ただし、 LIKE ステートメントに含めるために文字をエスケープする場合は、別のアプローチを採用する必要があります。 LIKE ステートメントでは、_ と % はワイルドカードではなくリテラル文字とみなされます。これらの文字を文字通りに一致させるには、ESCAPE 句を使用してエスケープする必要があります。

たとえば、リテラルのパーセント記号に一致させるには、LIKE ステートメントで次の構文を使用する必要があります。

LIKE 'something\%' ESCAPE '\'
ログイン後にコピー

注バックスラッシュ () を LIKE エスケープ文字と SQL 文字列リテラルのエスケープ文字の両方として使用する。これにより、パーセント記号 (%) を LIKE ステートメント内で文字通り解釈できるようになります。

PHP の準備されたステートメントを使用する場合、エスケープは自動的に処理され、手動でエスケープする必要がなくなります。ただし、準備されたステートメントが使用できない場合は、mysql_real_escape_string() と addcslashes() を組み合わせることで、潜在的な SQL インジェクション攻撃からユーザー入力を効果的に保護できます。

以上がクエリおよび LIKE ステートメントで MySQL ワイルドカード文字を適切にエスケープする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート