MySQL 挿入のための PHP での一重引用符のエスケープ
一重引用符 (') を含むデータをデータベースに挿入するときに、MySQL エラーが発生することがあります。この問題を解決するには、適切な手法を使用して一重引用符をエスケープすることが重要です。
コード スニペットでは、2 つの INSERT クエリを使用してフォーム データをデータベースに追加しています。
<code class="php">INSERT INTO job_log ... VALUES (...)</code>
<code class="php">INSERT INTO message_log ... VALUES (...)</code>
クエリ 1:
最初のクエリは、GET、POST、COOKIE 変数から文字列をエスケープする magic_quotes_gpc を使用している可能性が高いため、一重引用符をエスケープしなくても適切に機能します。
クエリ 2:
文字列に一重引用符 (「O'Brien」など) が含まれている場合、2 番目のクエリは失敗します。最初のクエリとは異なり、2 番目のクエリの文字列はエスケープされていません。
この問題を回避するには、データベースに文字列を挿入する前に mysql_real_escape_string() を使用して文字列をエスケープする必要があります。これにより、一重引用符の前にバックスラッシュ () が追加されます:
<code class="php">INSERT INTO message_log ... VALUES (...)</code>
例:
<code class="php">$escapedString = mysql_real_escape_string("O'Brien"); $query = mysql_query("INSERT INTO message_log ... VALUES ('$escapedString', ...");</code>
文字列のエスケープ:
次のようにすることをお勧めします。エラーが発生していない場合でも、文字列をデータベースに挿入する前に必ずエスケープしてください。これにより、SQL インジェクション攻撃が防止され、データの整合性が確保されます。 PHP では、mysql_real_escape_string() または PDO ライブラリの bindingParam() メソッドを使用して、文字列を効果的にエスケープできます。
以上がMySQL 挿入のために PHP で一重引用符をエスケープする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。