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!