Rumah >pembangunan bahagian belakang >masalah PHP >Bagaimana untuk menyelesaikan data Cina yang kacau ditambah oleh sisipan php

Bagaimana untuk menyelesaikan data Cina yang kacau ditambah oleh sisipan php

PHPz
PHPzasal
2023-04-04 14:29:10860semak imbas

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.

  1. Semak pengekodan pangkalan data

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.

  1. Tetapkan kaedah pengekodan PHP

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.

  1. Nyatakan set aksara dalam pernyataan SQL

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.

  1. Gunakan pernyataan yang disediakan

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!

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