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

Patricia Arquette
Lepaskan: 2024-11-02 21:07:02
asal
228 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!