MySQL 挿入のための PHP での一重引用符のエスケープ
PHP を使用して MySQL データベースにデータを挿入する場合、一重引用符をエスケープすることが重要です予期しない動作を防ぐために、データ内に (') を追加します。 MySQL ステートメント内で一重引用符を使用し、2 回目の挿入試行でエラーが発生すると、一般的な問題が発生します。
クエリ 1
最初のクエリ。 job_log テーブルへのフォームの挿入は、booking_name フィールドの一重引用符が明示的にエスケープされていないため、正しく機能します。ただし、これは推奨される方法ではありません。
$result = mysql_query("INSERT INTO job_log (order_id, ...) VALUES ('$order_id', '$supplier_id', ..., '$booking_name', '$address', ...)");
クエリ 2
データベースから message_log テーブルにデータを挿入する 2 番目のクエリは、次の場合に失敗します。 Primary_contact フィールドには一重引用符が含まれています。これは、row->primary_email 文字列内の単一引用符が MySQL 構文エラーを引き起こすためです。
$query = mysql_query("INSERT INTO message_log (order_id, ...) VALUES ('$order_id', '".date('Y-m-d H:i:s', time())."', '$email', '$from', ..., '$row->primary_email' ,..., '$message_content', '1')");
mysql_real_escape_string を使用したエスケープ ソリューション
この問題を解決するには、次のようにします。データベースに挿入される文字列値内の単一引用符を適切にエスケープすることが重要です。これは、MySQL 構文に準拠するように文字列をエスケープする mysql_real_escape_string() 関数を使用して実現できます。
$esc_primary_email = mysql_real_escape_string($row->primary_email); $query = mysql_query("INSERT INTO message_log (order_id, ...) VALUES ('$order_id', '".date('Y-m-d H:i:s', time())."', '$email', '$from', ..., '$esc_primary_email' ,..., '$message_content', '1')");
mysql_real_escape_string() を使用して一重引用符をエスケープすると、クエリはエラーが発生することなく正常に実行され、確実に実行されます。データベースへのデータの正しい挿入。
以上がPHP を使用して MySQL データベースに一重引用符を安全に挿入する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。