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() は、
主な違い
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 サイトの他の関連記事を参照してください。