Maison >base de données >tutoriel mysql >PDO et MySQL : dois-je définir le jeu de caractères dans la chaîne de connexion ou utiliser « SET NAMES » ?

PDO et MySQL : dois-je définir le jeu de caractères dans la chaîne de connexion ou utiliser « SET NAMES » ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-18 14:12:13951parcourir

PDO and MySQL: Should I Set the Charset in the Connection String or Use `SET NAMES`?

PDO : Dois-je définir un jeu de caractères et des noms ?

Dans le passé, lors de l'utilisation des fonctions mysql_*, il était nécessaire pour définir le jeu de caractères et exécuter une requête SET NAMES pour garantir un codage de caractères correct. Le même principe s'applique aux connexions PDO.

Option PDO

Pour les connexions PDO, vous pouvez spécifier le jeu de caractères dans le cadre de la chaîne de connexion :

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

Pré-PHP 5.3.6

Si vous utilisez PHP avant la version 5.3.6, l'option charset est ignorée. Pour définir le jeu de caractères dans ce cas, vous devez utiliser la méthode exec() de PDO :

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

En définissant le jeu de caractères, vous vous assurez que votre application communique avec la base de données en utilisant le codage de caractères correct, évitant ainsi la corruption des données et problèmes d'affichage.

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