Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Mengatasi Ralat Sintaks MySQL yang Disebabkan oleh Apostrof dalam Data yang Disisipkan?

Bagaimana untuk Mengatasi Ralat Sintaks MySQL yang Disebabkan oleh Apostrof dalam Data yang Disisipkan?

Patricia Arquette
Patricia Arquetteasal
2024-10-24 02:47:29921semak imbas

How to Overcome MySQL Syntax Errors Caused by Apostrophes in Inserted Data?

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!

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