Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menyelesaikan masalah aksara Cina yang kacau apabila memasukkan data ke dalam pangkalan data dalam PHP

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

PHPz
PHPzasal
2023-04-10 09:44:46581semak imbas

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

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

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!

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