Bagaimana untuk menyelesaikan masalah aksara Cina yang kacau apabila memasukkan data ke dalam pangkalan data dalam PHP

PHPz
Lepaskan: 2023-04-10 11:16:43
asal
638 orang telah melayarinya

PHP ialah bahasa skrip sumber terbuka popular yang digunakan terutamanya untuk pembangunan web. Apabila kami menggunakan PHP untuk pembangunan, kami mungkin menghadapi masalah aksara Cina yang kacau, terutamanya apabila memasukkan data Cina ke dalam pangkalan data. Artikel ini akan memperkenalkan cara untuk mengelakkan situasi ini dalam PHP.

  1. Tetapkan pengekodan aksara

Apabila kita menyambung ke pangkalan data, kita perlu menetapkan set aksara pangkalan data agar konsisten dengan set aksara skrip PHP, jika tidak, bercelaru aksara akan muncul apabila memasukkan maklumat bahasa Cina. Kami menambah kod berikut apabila menyambung ke pangkalan data:

$con=mysqli_connect("localhost","my_user","my_password","my_db");
mysqli_query($con,"SET NAMES utf8");
Salin selepas log masuk
  1. Tegaskan untuk menggunakan pengekodan UTF-8

UTF-8 ialah pengekodan berbilang bait yang menyokong Set aksara Unicode. Menggunakan pengekodan UTF-8 boleh memastikan bahawa data yang mengandungi bahasa Cina dalam pangkalan data boleh dimasukkan dengan betul. Kami boleh menyemak sama ada fail PHP dikodkan UTF-8 melalui kaedah berikut:

$encoding = mb_detect_encoding($str, "UTF-8,GBK,GB2312,BIG5");
Salin selepas log masuk

Jika pengekodan $yang dikembalikan ialah "UTF-8", fail PHP dikodkan UTF-8.

  1. Gunakan fungsi PHP untuk melepaskan rentetan

Apabila melaksanakan pernyataan SQL, kita perlu menggunakan fungsi untuk menukar rentetan kepada rentetan selamat SQL untuk memastikan data dalam pangkalan data Keselamatan . PHP menyediakan fungsi untuk melepaskan rentetan - mysqli_real_escape_string(). Kita hanya boleh melepaskan rentetan sebelum memasukkan data baharu.

$name=mysqli_real_escape_string($con,$_POST['name']);
$sql="INSERT INTO TABLE_NAME(name) VALUES('$name')";
mysqli_query($con,$sql);
Salin selepas log masuk
  1. Menggunakan Objek Data PHP (PDO)

PDO ialah lapisan abstraksi pangkalan data PHP yang boleh menyokong pelbagai pangkalan data. Apabila menggunakan PDO, kita boleh menetapkan pengekodan aksara untuk sambungan pangkalan data dan menggunakan fungsi PDO::quote() untuk melarikan diri.

$dsn = "mysql:host=localhost;dbname=myDatabase;charset=utf8";
$username = "username";
$password = "password";
$options = array(
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8",
);

try {
    $pdo = new PDO($dsn, $username, $password, $options);
    $name = $pdo->quote($_POST['name']);
    $sql = "INSERT INTO TABLE_NAME(name) VALUES($name)";
    $pdo->exec($sql);
} catch (PDOException $e) {
    echo "Error: " . $e->getMessage();
    die();
}
Salin selepas log masuk

Apabila menggunakan sisipan php, jika anda menemui aksara Cina yang kacau, kami boleh menyelesaikannya melalui kaedah di atas. Tetapan pengekodan aksara yang betul, pelarian rentetan dan penggunaan PDO boleh memastikan bahawa kami boleh berjaya memasukkan data Cina ke dalam pangkalan data pada bila-bila masa.

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

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