Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mencegah Ralat MySQL Disebabkan oleh Petikan Tunggal dalam PHP?

Bagaimana untuk Mencegah Ralat MySQL Disebabkan oleh Petikan Tunggal dalam PHP?

Patricia Arquette
Patricia Arquetteasal
2024-11-02 21:07:02229semak imbas

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

Melepaskan Petikan Tunggal dalam PHP untuk MySQL

Anda telah menghadapi isu di mana petikan tunggal menyebabkan ralat MySQL semasa memasukkan data ke dalam pangkalan data. Isu ini timbul apabila data tidak dilarikan dengan betul sebelum dimasukkan.

Dalam pertanyaan pertama, melarikan diri tidak diperlukan kerana anda memasukkan data terus daripada borang. Walau bagaimanapun, pertanyaan kedua mendapatkan semula data daripada rekod yang dimasukkan sebelum ini dan cuba memasukkannya ke dalam jadual baharu. Memandangkan data mungkin mengandungi petikan tunggal yang tidak dapat dilepaskan, ia mencetuskan ralat MySQL.

Untuk mengelakkan ralat ini, anda boleh menggunakan fungsi mysql_real_escape_string() untuk melepaskan semua rentetan sebelum memasukkannya ke dalam pangkalan data. Fungsi ini menukar aksara khas seperti petikan tunggal kepada persamaan yang dilepaskan, menghalangnya daripada menyebabkan ralat.

Sebagai contoh, dalam Pertanyaan 2, gantikan baris berikut:

<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>

Dengan:

<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>

Dengan melepaskan semua rentetan dengan cara ini, anda boleh menghalang petikan tunggal daripada menyebabkan ralat MySQL dan memastikan bahawa data dimasukkan dengan betul.

Atas ialah kandungan terperinci Bagaimana untuk Mencegah Ralat MySQL Disebabkan oleh Petikan Tunggal dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn