MySQL 挿入のための PHP での一重引用符のエスケープ
MySQL データベースへのデータの挿入には、特殊文字を含む文字列の処理が含まれることがよくあります。一重引用符の扱いは特に注意が必要です。
問題
フォームからのデータの挿入と処理に 2 つの SQL ステートメントが使用されるシナリオについて説明しました。データベースにデータを挿入するために使用される最初のステートメントは、問題なく機能しました。ただし、データを取得して電子メールをトリガーする 2 番目のステートメントは、名前に一重引用符 (例: "O'Brien") が含まれている場合、MySQL エラーで失敗しました。
解決策
解決策は、データベースに挿入される文字列をエスケープすることです。 PHP は、この目的のために mysql_real_escape_string() 関数を提供します。これにより、一重引用符などの文字がエスケープされた同等の文字に置き換えられ、エラーやデータ破損が防止されます。
動作が異なる理由
2 つのステートメントの動作が異なる理由おそらく、magic_quotes_gpc の使用が原因です。この PHP 設定は、$_GET、$_POST、$_COOKIES から収集された文字列を自動的にエスケープします。最初のステートメントでは、データがフォームから直接取得され、この自動エスケープが適用されました。
しかし、データが取得されて 2 番目のステートメントに挿入されると、エスケープされなくなりました。その結果、名前の一重引用符によって MySQL エラーが発生しました。 mysql_real_escape_string() を使用すると、両方の文字列を適切にエスケープでき、特殊文字が正しく処理され、データの整合性が維持されます。
以上がPHP を使用して一重引用符付きの文字列を MySQL に安全に挿入するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。