(PECL PDO_MYSQL >= 0.1.0)
PDO_MYSQL DSN — Connexion aux bases de données MySQL
Le Data Source Name (DSN) de PDO_MYSQL est composé des éléments suivants :
Le préfixe DSN est mysql:
.
L'hôte sur lequel le serveur de base de données se situe.
Le numéro de port où le serveur de base de données est en train d'écouter.
Le nom de la base de données.
Le socket Unix MySQL (ne devrait pas être utilisé avec host ou port).
Le jeu de caractères. Voir la documentation sur les concepts des jeux de caractères pour plus d'informations.
Avant la version 5.3.6 de PHP, cet élément était ignoré.
Le même comportement peut être partiellement reproduit avec
l'option PDO::MYSQL_ATTR_INIT_COMMAND
du driver, comme le montre l'exemple suivant.
La méthode de l'exemple suivant ne peut être utilisée qu'avec des jeux de caractères qui partagent la même représentation des 7 octets les plus faibles qu'en ASCII, comme ISO-8859-1 et UTF-8. Les utilisateurs utilisant des jeux de caractères ayant une représentation différente (comme UTF-16 ou Big5) doivent utiliser l'option charset fournie depuis la version 5.3.6 de PHP.
Exemple #1 Définition du jeu de caractères pour la connexion à UTF-8 avant PHP 5.3.6
<?php
$dsn = 'mysql:host=localhost;dbname=testdb';
$username = 'username';
$password = 'password';
$options = array(
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
);
$dbh = new PDO($dsn, $username, $password, $options);
?>
Version | Description |
---|---|
5.3.6 | Avant la version 5.3.6, charset était ignoré. |
Exemple #2 Exemples avec le DSN de PDO_MYSQL
L'exemple suivant montre le DSN PDO_MYSQL pour se connecter aux bases de données MySQL :
mysql:host=localhost;dbname=testdb
mysql:host=localhost;port=3307;dbname=testdb mysql:unix_socket=/tmp/mysql.sock;dbname=testdb
Note: Unix seulement:
Lorsque le nom d'hôte est "localhost", la connexion est faite par un socket Unix. Si PDO_MYSQL est compilé avec libmysql alors le fichier de socket est celui précisé à la compilation de libmysql. Si PDO_MYSQL est compilé avec mysqlnd, un socket par défaut peut être indiqué via la paramètre pdo_mysql.default_socket.