ホームページ > データベース > mysql チュートリアル > MySQL では、`mysql_real_escape_string` と `addslashes` のどちらのエスケープ関数が適していますか?

MySQL では、`mysql_real_escape_string` と `addslashes` のどちらのエスケープ関数が適していますか?

Susan Sarandon
リリース: 2024-11-12 15:50:02
オリジナル
1045 人が閲覧しました

Which escaping function is better for MySQL: `mysql_real_escape_string` or `addslashes`?

MySQL エスケープ関数: mysql_real_escape_string とaddslashes

PHP 関数 mysql_real_escape_string() とaddslashes() は両方とも、潜在的に問題のある文字をエスケープするために使用されます。 MySQL データベースへの挿入を目的とした文字列。ただし、この 2 つの関数には微妙な違いがあり、さまざまなユースケースへの適合性に影響を与える可能性があります。

addslashes()

addslashes() は、事前定義された文字のセットを置き換えます。バックスラッシュを使用して、データベースによって特殊文字として解釈されないようにします。 addslashes() によってエスケープされるデフォルトの文字セットには、一重引用符 (')、二重引用符 (")、バックスラッシュ ()、および NULL バイトが含まれます。

mysql_real_escape_string()

mysql_real_escape_string() は、MySQL の内部 mysql_real_escape_string() 関数への呼び出しをラップします。この関数は、addslashes() よりも広範囲の文字をエスケープします。具体的には、mysql_real_escape_string() は、

  • x00 ( NULL バイト)
  • n (ラインフィード)
  • r (キャリッジリターン)
  • , (カンマ)
  • ' (一重引用符)
  • " (二重引用符)
  • x1a (EOF (ファイルの終わり))

主な違い

mysql_real_escape_string の主な違い() と addslashes() は、前述のエスケープ文字の処理にあります。 mysql_real_escape_string() は、addlashes() がエスケープしない特定の文字 (NULL バイト、ラインフィード、キャリッジリターンなど) をエスケープします。

さらに、mysql_real_escape_string() は、MySQL によって定義されたルールに基づいてエスケープ操作を実行します。 addslashes() によって適用されるエスケープ規則とは異なる場合があります。たとえば、MySQL の最近のバージョンでは、文字列のエスケープには、引用符の前にバックスラッシュを付けるのではなく、引用符を 2 つ重ねる必要がある場合があります。 mysql_real_escape_string() はこれらの変更を自動的に処理しますが、addslashes() は処理しません。

いつどの関数を使用するか

一般に、addlashes() よりも mysql_real_escape_string() の方が優先されます。 MySQL データベース向けの文字列をエスケープするために使用します。これは、mysql_real_escape_string() が MySQL 固有のエスケープ ルールを使用し、文字列が MySQL クエリに挿入できるように適切に準備されるためです。

一方、addslashes() は、文字列をエスケープする必要がある状況に適しています。一般的なテキスト操作や表示用の文字列の準備など、他の目的に使用します。ただし、addlashes() の制限を認識し、MySQL データベース用の文字列をエスケープするためにそれを使用する場合は、コードを徹底的にテストすることが重要です。

以上がMySQL では、`mysql_real_escape_string` と `addslashes` のどちらのエスケープ関数が適していますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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