Bagaimana untuk menyelesaikan masalah aksara bercelaru yang dimasukkan ke dalam pangkalan data dalam PHP

PHPz
Lepaskan: 2023-03-28 15:43:22
asal
792 orang telah melayarinya

Apabila menggunakan PHP untuk memasukkan data ke dalam pangkalan data, kadangkala anda akan menghadapi aksara yang bercelaru. Ini kerana set aksara tidak konsisten semasa penghantaran data. Artikel ini akan memperkenalkan cara menyelesaikan masalah aksara bercelaru yang dimasukkan ke dalam pangkalan data oleh PHP.

1. Semak set aksara pangkalan data

Sebelum mula menyelesaikan masalah, anda mesti menyemak set aksara pangkalan data terlebih dahulu. Anda boleh menggunakan arahan berikut untuk melihat set aksara pangkalan data semasa:

SHOW VARIABLES LIKE 'character_set_database';
Salin selepas log masuk

Jika set aksara pangkalan data bukan UTF-8, maka anda perlu mengubah suainya kepada UTF-8 untuk memastikan bahawa data boleh dimasukkan dan dibaca dengan betul . Anda boleh menggunakan arahan berikut untuk mengubah suai set aksara pangkalan data kepada UTF-8:

ALTER DATABASE database_name CHARACTER SET utf8 COLLATE utf8_general_ci;
Salin selepas log masuk

2 Tetapkan format pengekodan fail PHP

Tetapkan format pengekodan di bahagian atas fail PHP sebagai UTF-8, yang memastikan rentetan dalam PHP boleh dimasukkan dengan betul ke dalam pangkalan data. Anda boleh menggunakan kod berikut untuk menetapkan format pengekodan PHP:

header('Content-Type: text/html; charset=UTF-8');
Salin selepas log masuk

3 Tetapkan format pengekodan mysqli

Apabila menggunakan sambungan mysqli untuk memasukkan data dalam. PHP, anda perlu menetapkan Format pengekodan mysqli. Anda boleh menggunakan kod berikut untuk menetapkan format pengekodan mysqli:

$mysqli = new mysqli("localhost", "username", "password", "database_name");
$mysqli -> set_charset("utf8");
Salin selepas log masuk

4 Gunakan fungsi htmlspecialchars

Sebelum memasukkan data, gunakan PHP terbina dalam. fungsi htmlspecialchars untuk menukar aksara yang perlu dimasukkan rentetan untuk melarikan diri. Ini boleh mengelakkan aksara khas daripada menjejaskan pangkalan data. Anda boleh menggunakan kod berikut untuk melepaskan rentetan:

$str = htmlspecialchars($str, ENT_QUOTES, 'UTF-8');
Salin selepas log masuk

5. Gunakan pernyataan yang disediakan

Menggunakan pernyataan yang disediakan boleh menghalang suntikan SQL dengan berkesan dan pada masa yang sama Elakkan masalah kod bercelaru. Anda boleh menggunakan kod berikut untuk memasukkan data menggunakan pernyataan yang disediakan:

$stmt = $mysqli -> prepare("INSERT INTO table_name (column1, column2) VALUES (?, ?)");
$stmt -> bind_param("ss", $val1, $val2);
$val1 = htmlspecialchars($val1, ENT_QUOTES, 'UTF-8');
$val2 = htmlspecialchars($val2, ENT_QUOTES, 'UTF-8');
$stmt -> execute();
Salin selepas log masuk

6. Gunakan PDO

Menggunakan PDO boleh mengendalikan operasi pangkalan data dengan lebih mudah dan berkesan mengelakkan Garbled masalah kod. Anda boleh menggunakan kod berikut untuk memasukkan data menggunakan PDO:

$conn = new PDO("mysql:host=localhost;dbname=database_name;charset=utf8", "username", "password");
$stmt = $conn -> prepare("INSERT INTO table_name (column1, column2) VALUES (?, ?)");
$stmt -> execute([$val1, $val2]);
Salin selepas log masuk

7. Ringkasan

Apabila memasukkan ke dalam pangkalan data menggunakan PHP, ia sangat biasa ditemui watak bercelaru. Walau bagaimanapun, anda boleh menyelesaikan masalah watak bercelaru dengan mudah dengan hanya mengikut langkah di atas. Perlu diingatkan bahawa sebelum menjalankan operasi pangkalan data, anda mesti menyemak sama ada set aksara pangkalan data adalah betul. Ini adalah langkah penting untuk mengelakkan aksara bercelaru.

Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan masalah aksara bercelaru yang dimasukkan ke dalam pangkalan data dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan