Apabila menggunakan PHP untuk pembangunan pangkalan data, kita selalunya perlu menggunakan pernyataan SQL untuk memasukkan data. Walau bagaimanapun, kadangkala apabila memasukkan data bahasa Cina ke dalam pangkalan data, aksara yang bercelaru akan muncul Artikel ini akan memperkenalkan cara menyelesaikan masalah ini.
Pertama, kita perlu menyemak pengekodan pangkalan data. Dalam MySQL, anda boleh menyemak kaedah pengekodan pangkalan data melalui pernyataan SQL berikut:
SHOW VARIABLES LIKE 'character_set_database';
Jika hasil output ialah utf8 atau utf8mb4, kaedah pengekodan lalai pangkalan data ialah UTF-8. Jika keputusan output berada dalam pengekodan lain, anda perlu menentukan set aksara yang sepadan apabila menggunakan pernyataan INSERT.
Dalam PHP, anda boleh menggunakan pernyataan berikut untuk menetapkan kaedah pengekodan:
mysqli_set_charset($mysqli, 'utf8');
Di mana, $mysqli ialah objek mysqli yang disambungkan ke pangkalan data. Menetapkan kaedah pengekodan kepada UTF-8 boleh memastikan bahawa aksara yang bercelaru tidak akan muncul apabila memasukkan data Cina ke dalam pangkalan data.
Jika kedua-dua kaedah di atas tidak dapat menyelesaikan masalah bercelaru, maka kita perlu menentukan set aksara dalam INSERT kenyataan. Contohnya:
INSERT INTO `table_name` (`column1`, `column2`, ...) VALUES (N'中文', 'English', ...)
Dalam pernyataan SQL, gunakan N'' untuk menukar rentetan Cina kepada pengekodan Unikod untuk memastikan rentetan Cina tidak akan bercelaru.
Akhir sekali, untuk mengelakkan serangan suntikan SQL dan meningkatkan kebolehgunaan semula kod, kami mengesyorkan anda menggunakan pernyataan yang disediakan. Pernyataan yang disediakan boleh dibuat melalui objek mysqli atau PDO, dan kemudian nyatakan kaedah pengekodan semasa menetapkan parameter, contohnya:
$stmt = $mysqli->prepare("INSERT INTO `table_name` (`column1`, `column2`, ...) VALUES (?, ?, ...)"); $stmt->bind_param("ss", $val1, $val2, ...); $stmt->execute();
Dalam contoh ini, apabila menetapkan parameter menggunakan kaedah bind_param, tetapkan set aksara kepada ' ss', yang bermaksud parameter adalah jenis rentetan dan set aksara ialah UTF-8.
Ringkasan
Artikel ini memperkenalkan beberapa kaedah untuk menyelesaikan masalah menambah aksara Cina yang kacau dalam PHP INSERT SQL, termasuk menyemak pengekodan pangkalan data, menetapkan kaedah pengekodan PHP, menyatakan set aksara dalam Pernyataan SQL dan menggunakan pernyataan prapemprosesan. Semasa proses pembangunan, kita harus memilih kaedah yang sesuai mengikut situasi sebenar dan mengikut piawaian pengekodan untuk memastikan kebolehbacaan dan kebolehselenggaraan kod.
Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan data Cina yang kacau ditambah oleh sisipan php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!