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

Patricia Arquette
Lepaskan: 2024-10-24 02:47:29
asal
920 orang telah melayarinya

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

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

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!

sumber:php
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!