Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengatasi Ralat Sintaks MySQL yang Disebabkan oleh Apostrof dalam Data yang Disisipkan?
Ralat Sintaks MySQL untuk Memasukkan Data dengan Apostrof
Apabila cuba memasukkan data ke dalam pangkalan data MySQL menggunakan pertanyaan INSERT, anda mungkin menghadapi ralat jika data mengandungi apostrof (petikan tunggal). Ralat ini biasanya ditunjukkan sebagai isu sintaks yang berkaitan dengan data yang dipetik.
Mesej Ralat:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 's','Corn Flakes 170g','$ 15.90','$ 15.90','$ 14.10','--')' at line 1MySQL Update Error:
Penjelasan:
Dalam MySQL, apostrof digunakan sebagai pembatas untuk nilai rentetan. Apabila apostrof muncul dalam rentetan, ia mesti dilepaskan menggunakan garis miring ke belakang () untuk membezakannya daripada pembatas. Ini memastikan bahawa penghurai MySQL memahami bahawa apostrof adalah sebahagian daripada rentetan dan bukan pembatas.
Penyelesaian:
Untuk menyelesaikan isu ini, elakkan sebarang apostrof dalam data yang anda cuba masukkan dengan menambahkan aksara garis miring ke belakang sebelum setiap apostrof. Sebagai contoh, daripada memasukkan rentetan "Kellog's", anda akan memasukkan "Kellogg's". Dengan melepaskan apostrof, anda mengarahkan MySQL untuk menganggapnya sebagai sebahagian daripada nilai rentetan, bukan pembatas.
Penyelesaian Tambahan (Menggunakan mysql_real_escape_string):
Jika anda menggunakan PHP untuk menyambung ke MySQL, anda boleh menggunakan fungsi mysql_real_escape_string() untuk melarikan diri secara automatik sebarang aksara khas, termasuk apostrof, dalam data anda sebelum memasukkannya ke dalam pangkalan data. Fungsi ini memastikan bahawa data anda diformatkan dengan betul untuk sisipan dan menghalang serangan suntikan SQL. Berikut ialah contoh fungsi menggunakan mysql_real_escape_string():
<code class="php">function insert($database, $table, $data_array) { // ... (Rest of the code omitted for brevity) // Escape apostrophes in data values foreach ($data_array as $key => $value) { $tmp_dat[] = "'".mysql_real_escape_string($value)."'"; } // ... (Rest of the code omitted for brevity) }</code>
Atas ialah kandungan terperinci Bagaimana untuk Mengatasi Ralat Sintaks MySQL yang Disebabkan oleh Apostrof dalam Data yang Disisipkan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!