Maison >base de données >tutoriel mysql >Comment définir correctement le codage des caractères pour les connexions PDO MySQL ?

Comment définir correctement le codage des caractères pour les connexions PDO MySQL ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-04 08:23:35858parcourir

How to Properly Set Character Encoding for PDO MySQL Connections?

Gestion du codage des caractères de connexion PDO

Lors de l'établissement d'une connexion MySQL à l'aide de l'extension PDO (PHP Data Objects), un codage de caractères approprié est crucial pour garantir l’intégrité des données et le bon fonctionnement. Explorons comment définir l'encodage des caractères pour une connexion PDO.

Dans l'extension mysql_* traditionnelle utilisée dans votre code précédent :

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

Ces commandes définissent l'encodage des caractères pour la connexion. Cependant, avec PDO, l'approche est différente.

Pour définir le codage des caractères pour une connexion PDO, vous pouvez le spécifier dans la chaîne de connexion elle-même. Par exemple :

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

Cette chaîne ajoute l'option charset à la chaîne de connexion, en spécifiant l'encodage souhaité, dans ce cas, "utf8mb4". L'utilisation de cette méthode définit l'encodage lorsque la connexion est établie.

Versions PHP héritées

Cependant, si vous utilisez une version PHP antérieure à 5.3.6, le jeu de caractères L'option dans la chaîne de connexion a été ignorée. Dans ce cas, vous devez utiliser une méthode alternative :

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

Ici, la connexion est établie sans spécifier l'encodage, et la méthode exec() est utilisée pour exécuter une requête SQL pour définir l'encodage des caractères après la connexion est établie.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn