ホームページ >データベース >mysql チュートリアル >PHP を使用して MySQL データベースに一重引用符を安全に挿入する方法

PHP を使用して MySQL データベースに一重引用符を安全に挿入する方法

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-01 16:30:15609ブラウズ

How to Safely Insert Single Quotes into MySQL Databases Using PHP?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。