ホームページ >バックエンド開発 >PHPチュートリアル >PHP の一重引用符によって引き起こされる MySQL エラーを防ぐ方法は?

PHP の一重引用符によって引き起こされる MySQL エラーを防ぐ方法は?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-02 21:07:02332ブラウズ

How to Prevent MySQL Errors Caused by Single Quotes in PHP?

PHP for MySQL での一重引用符のエスケープ

データを挿入するときに一重引用符が原因で MySQL エラーが発生するという問題が発生しました。データベース。この問題は、データが挿入前に適切にエスケープされていない場合に発生します。

最初のクエリでは、データをフォームから直接挿入しているため、エスケープは必要ありません。ただし、2 番目のクエリは、以前に挿入されたレコードからデータを取得し、それを新しいテーブルに挿入しようとします。データにはエスケープされていない一重引用符が含まれている可能性があるため、MySQL エラーが発生します。

このエラーを防ぐには、mysql_real_escape_string() 関数を使用して、データベースに文字列を挿入する前にすべての文字列をエスケープします。この関数は、一重引用符などの特殊文字をエスケープされた同等の文字に変換し、エラーの発生を防ぎます。

たとえば、クエリ 2 で、次の行を次の行に置き換えます:

<code class="php">$query = mysql_query("INSERT INTO message_log
(order_id, timestamp, message_type, email_from, supplier_id, primary_contact, secondary_contact, subject, message_content, status)
VALUES
('$order_id', '".date('Y-m-d H:i:s', time())."', '$email', '$from', '$row->supplier_id', '$row->primary_email' ,'$row->secondary_email', '$subject', '$message_content', '1')");</code>

>
<code class="php">$query = mysql_query("INSERT INTO message_log
(order_id, timestamp, message_type, email_from, supplier_id, primary_contact, secondary_contact, subject, message_content, status)
VALUES
('$order_id', '".mysql_real_escape_string(date('Y-m-d H:i:s', time()))."', '".mysql_real_escape_string($email)."', '".mysql_real_escape_string($from)."', '$row->supplier_id', '".mysql_real_escape_string($row->primary_email)."', '".mysql_real_escape_string($row->secondary_email)."', '".mysql_real_escape_string($subject)."', '".mysql_real_escape_string($message_content)."', '1')");</code>

この方法ですべての文字列をエスケープすることで、一重引用符による MySQL エラーの発生を防ぎ、データが正しく挿入されることを保証できます。

以上がPHP の一重引用符によって引き起こされる MySQL エラーを防ぐ方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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