1. Sebab aksara bercelaru
Apabila menggunakan PHP untuk menyambung ke MySQL, jika set aksara MySQL tidak konsisten dengan set aksara PHP, aksara bercelaru akan muncul. Sebab khusus adalah seperti berikut:
Set aksara MySQL dan set aksara PHP adalah tidak konsisten
Set aksara lalai MySQL ialah UTF-8, manakala set aksara lalai PHP ialah ISO-8859- 1. Jika anda tidak menentukan set aksara dalam kod PHP anda, PHP akan menggunakan set aksara ISO-8859-1. Pada masa ini, jika data yang ditanya daripada MySQL mengandungi aksara UTF-8, aksara bercelaru akan muncul.
Set aksara bagi jadual data MySQL tidak konsisten dengan set aksara pelayan MySQL
Dalam MySQL, setiap jadual data mempunyai set aksara lalai. Jika set aksara jadual data tidak konsisten dengan set aksara pelayan MySQL, aksara bercelaru mungkin muncul.
Cara PHP menyambung ke MySQL adalah salah
Apabila menyambung ke MySQL, PHP mempunyai berbilang kaedah sambungan, seperti mysql_connect, mysqli_connect, PDO, dll. Kaedah sambungan yang berbeza akan menggunakan kaedah pengekodan yang berbeza Jika dipilih secara tidak betul, ia akan menyebabkan masalah kod bercelaru.
2. Selesaikan masalah kod bercelaru
Memandangkan sebab di atas, langkah-langkah berikut boleh diambil untuk menyelesaikan masalah kod bercelaru.
Nyatakan set aksara untuk PHP
Dalam kod PHP, selesaikan masalah aksara bercelaru dengan menyatakan set aksara. Anda boleh menggunakan kod berikut:
header('Content-Type:text/html;charset=utf-8');
Ubah suai set aksara lalai MySQL
Anda boleh mengubah suai set aksara lalai MySQL dalam fail konfigurasi MySQL my. cnf. Buka fail, cari bahagian [mysqld] dan tambah kod berikut:
character-set-server=utf8
Ubah suai set aksara jadual data MySQL
Anda boleh ubah suai jadual data melalui pernyataan berikut Set aksara:
ALTER TABLE {table_name} CONVERT TO CHARACTER SET utf8;
Ubah suai cara PHP menyambung ke MySQL
Anda boleh menggunakan PDO untuk menyambung ke MySQL dan tentukan set aksara semasa menyambung, seperti berikut:
$pdo = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', 'password');
Jika anda menggunakan mysqli untuk menyambung ke MySQL, anda boleh menentukan set aksara melalui kod berikut:
$mysqli = mysqli_connect('localhost', 'root', 'password', 'test'); mysqli_set_charset($mysqli, 'utf8');
Simpan fail PHP dalam format pengekodan UTF-8
Jika fail PHP anda mengandungi aksara Cina, anda mesti menyimpan fail dalam format pengekodan UTF-8 semasa menyimpan fail, jika tidak, aksara bercelaru akan muncul.
Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan masalah sambungan php ke mysql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!