Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menetapkan Pengekodan Aksara dengan Betul untuk Sambungan MySQL PDO?

Bagaimana untuk Menetapkan Pengekodan Aksara dengan Betul untuk Sambungan MySQL PDO?

Linda Hamilton
Linda Hamiltonasal
2025-01-04 08:23:35793semak imbas

How to Properly Set Character Encoding for PDO MySQL Connections?

Pengendalian Pengekodan Aksara Sambungan PDO

Apabila membuat sambungan MySQL menggunakan sambungan PDO (Objek Data PHP), pengekodan aksara yang betul adalah penting untuk memastikan integriti data dan operasi yang betul. Mari terokai cara menetapkan pengekodan aksara untuk sambungan PDO.

Dalam sambungan mysql_* tradisional yang digunakan dalam kod anda sebelum ini:

mysql_set_charset("utf8",$link);
mysql_query("SET NAMES 'UTF8'");

Arahan ini menetapkan pengekodan aksara untuk sambungan. Walau bagaimanapun, dengan PDO, pendekatannya berbeza.

Untuk menetapkan pengekodan aksara bagi sambungan PDO, anda boleh menentukannya dalam rentetan sambungan itu sendiri. Contohnya:

$connect = new PDO("mysql:host=$host;dbname=$db;charset=utf8mb4", $user, $pass, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));

Rentetan ini menambahkan pilihan charset pada rentetan sambungan, menyatakan pengekodan yang diingini, dalam kes ini, "utf8mb4". Menggunakan kaedah ini menetapkan pengekodan apabila sambungan diwujudkan.

Versi PHP Lama

Walau bagaimanapun, jika anda menggunakan versi PHP sebelum 5.3.6, charset pilihan dalam rentetan sambungan diabaikan. Dalam kes ini, anda mesti menggunakan kaedah ganti:

$dbh = new PDO("mysql:host=$host;dbname=$db",  $user, $password);
$dbh->exec("set names utf8mb4");

Di sini, sambungan diwujudkan tanpa menyatakan pengekodan, dan kaedah exec() digunakan untuk melaksanakan pertanyaan SQL untuk menetapkan pengekodan aksara selepas sambungan diwujudkan.

Atas ialah kandungan terperinci Bagaimana untuk Menetapkan Pengekodan Aksara dengan Betul untuk Sambungan MySQL PDO?. 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