Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menyelesaikan masalah aksara bercelaru yang dimasukkan ke dalam pangkalan data dalam PHP

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

PHPz
PHPzasal
2023-03-28 15:00:29721semak imbas

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';

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;

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');

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");

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');

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();

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]);

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!

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