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