Melepaskan Petikan Tunggal dalam PHP untuk Penyelitan MySQL
Ralat MySQL boleh timbul apabila memasukkan data yang mengandungi petikan tunggal (') ke dalam pangkalan data. Untuk menyelesaikan isu ini, adalah penting untuk melepaskan petikan tunggal menggunakan teknik yang sesuai.
Dalam coretan kod anda, anda menggunakan dua pertanyaan INSERT untuk menambah data borang pada pangkalan data anda:
<code class="php">INSERT INTO job_log ... VALUES (...)</code>
<code class="php">INSERT INTO message_log ... VALUES (...)</code>
Pertanyaan 1:
Pertanyaan pertama berfungsi dengan betul tanpa melepaskan petikan tunggal kerana anda berkemungkinan menggunakan magic_quotes_gpc, yang melepaskan rentetan daripada pembolehubah GET, POST dan COOKIE.
Pertanyaan 2:
Pertanyaan kedua gagal apabila rentetan mengandungi petikan tunggal, seperti "O'Brien". Tidak seperti pertanyaan pertama, rentetan dalam pertanyaan kedua tidak dilepaskan.
Untuk mengelakkan isu ini, anda harus menggunakan mysql_real_escape_string() untuk melepaskan rentetan sebelum memasukkannya ke dalam pangkalan data. Ini akan menambah garis miring ke belakang () sebelum petikan tunggal:
<code class="php">INSERT INTO message_log ... VALUES (...)</code>
Contohnya:
<code class="php">$escapedString = mysql_real_escape_string("O'Brien"); $query = mysql_query("INSERT INTO message_log ... VALUES ('$escapedString', ...");</code>
Escaping Strings:
Adalah amalan yang baik untuk sentiasa melarikan diri daripada rentetan sebelum memasukkannya ke dalam pangkalan data, walaupun anda tidak mengalami ralat. Ini menghalang serangan suntikan SQL dan memastikan integriti data. Dalam PHP, anda boleh menggunakan mysql_real_escape_string() atau kaedah bindParam() perpustakaan PDO untuk melepaskan rentetan dengan berkesan.
Atas ialah kandungan terperinci Bagaimana untuk melarikan diri petikan tunggal dalam PHP untuk sisipan MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!