MySQL の一般的なエスケープ文字には、一重引用符 (')、二重引用符 (")、バックスラッシュ ()、およびパーセント記号 (%) やアンダースコア (_) などの特殊文字が含まれます。これらの文字は、MySQL では特別な意味を持っています。エスケープしない場合、不正なクエリ結果や SQL インジェクションなどのセキュリティの問題が発生する可能性があります。
MySQL では、エスケープ文字を逆にできます。スラッシュでエスケープします。一重引用符を使用する場合は、クエリ ステートメントでは、一重引用符を含む文字列を正しくクエリできるように、一重引用符の前にバックスラッシュを追加して
SELECT * FROM my_table WHERE my_column = 'I'm a student';
をエスケープする必要があります。同様に、二重引用符を使用する場合もエスケープする必要があります。
SELECT * FROM my_table WHERE my_column = "The book is called "The Great Gatsby"";
MySQL では、バックスラッシュを使用して特殊文字をエスケープすることもできます。次の検索ステートメントを使用して、パーセント記号を含む文字列をクエリできます。
SELECT * FROM my_table WHERE my_column LIKE '%%%';
これにより、パーセント記号を正しく照合できます。
MySQL には、バックスラッシュを使用して文字をエスケープすることに限定されず、文字をエスケープするために使用できるいくつかの組み込み関数が用意されています。たとえば、二重縦棒 (| ) を使用できます。 |) 演算子を使用して文字列を接続し、関数 CONCAT_WS() を使用して文字を自動的にエスケープします。次に示すように:
SELECT CONCAT_WS(' ', 'I', 'am', 'a', 'student') AS sentence;
このクエリ ステートメントは、単語が適切にエスケープされたスペースを含む A 文字列を返します。
文字列インジェクションによるセキュリティ問題を防ぐには、エスケープ文字を使用して文字列をエスケープするだけでなく、クエリ メソッドのパラメータ化も使用できます。実際の値の代わりにプレースホルダを使用するパラメータ化されたクエリにより、データベースへの攻撃を防ぐことができます。たとえば、次のパラメータ化されたクエリを使用して、指定した単語を含む文字列をクエリできます:
SELECT * FROM my_table WHERE my_column LIKE CONCAT('%', ?, '%');
ここでの疑問符は、クエリ中に実際の値に動的に置き換えられるプレースホルダを表します。パラメータ化されたクエリを使用すると、アプリケーションのセキュリティが大幅に向上します。
以上がmysqlの文字をエスケープする方法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。