Connexion aux bdd avec PDO

Connexions et gestionnaire de connexions

Les connexions sont établies en créant des instances de la classe de base de PDO. Peu importe quel pilote (SGBD) vous utilisez,  le nom de la classe PDO reste inchangé. Le constructeur accepte des paramètres pour spécifier la base de données source (connue sous le nom de DSN) et optionnellement, le nom d’utilisateur et mot de passe (le cas échéant).

Exemple#1 connexion à MySQL

$dbh = new PDO(‘mysql:host=localhost;dbname=test’, $user, $pass);

S’il ya des erreurs de connexion, un objet PDOException sera lancé. Vous pouvez récupérer cette exception si vous souhaitez traiter la condition d’erreur, ou laisser à un gestionnaire global d’exception que vous avez mis en place par set_exception_handler () s’en charger.

Exemple#2 Gestion des erreurs de connexion

try {

$dbh = new PDO(‘mysql:host=localhost;dbname=test’, $user, $pass);

foreach ($dbh->query(‘SELECT * from FOO’) as $row) {

print_r($row);

}

$dbh = null;

} catch (PDOException $e) {

print  »Error!:  » . $e->getMessage() .  »

« ;

die();

}


Avertissement
Si votre application ne gère pas les exceptions lancées depuis le constructeur PDO, l’action par défaut du moteur zend est de terminer le script et d’afficher une trace. Cette trace devrait révéler des détails de connexion de base de données complète, y compris le nom d’utilisateur et le mot de passe. Il est de votre responsabilité de gérer cette exception, soit explicitement (via l’instruction catch) ou implicitement via set_exception_handler ().

Lors de la connexion à la base de données, une instance de la classe PDO est retournée à votre script. Le lien reste actif pendant toute la durée de l’objet PDO. Pour fermer la connexion, vous devez détruire l’objet en veillant à ce que toutes les autres références soient effacées. Vous pouvez faire cela en assignant NULL à la variable qui contient l’objet. Si vous ne le faites pas explicitement, PHP fermera automatiquement la connexion lorsque le script se terminera.

Exemple#3 Fermeture d’une connexion

$dbh = new PDO(‘mysql:host=localhost;dbname=test’, $user, $pass);

// use the connection here

// and now we’re done; close it

$dbh = null;

?>

Beaucoup d’applications web utilisent des connexions persistantes aux serveurs de bases de données. Les connexions persistantes ne sont pas fermées à la fin du script, mais sont mises en cache et réutilisées lorsqu’un autre script demande une connexion en utilisant les mêmes pouvoirs. Le cache des connexions persistantes vous permet d’éviter d’établir une nouvelle connexion à chaque fois qu’un script doit accéder à une base de données, donnant ainsi une application web plus rapide.

Exemple#4 Connexions persistantes

$dbh = new PDO(‘mysql:host=localhost;dbname=test’, $user, $pass, array(

PDO::ATTR_PERSISTENT => true

));

Note: Si vous souhaitez utiliser les connexions persistantes, vous devez configurer PDO:: ATTR_PERSISTENT dans l’appel au constructeur au moment de la création de l’objet PDO. Si la définition de cet attribut avec PDO-> setAttribute () intervient après l’instanciation de l’objet, le pilote n’utilisera pas les connexions persistantes.

Note: Si vous utilisez le pilote PDO ODBC et que votre bibliothèque ODBC supporte ODBC Connection Pooling, alors il est recommandé de ne pas utiliser les connexions persistantes PDO mais plutôt de laisser la mise en cache de la connexion à la connexion ODBC de mise en couche. Le pool de connexion ODBC est partagé avec d’autres modules dans le processus, si PDO met en cache la connexion, alors cette connexion ne sera jamais retournée par le pool de connexion ODBC, faisant que plusieurs connexions sont créées pour les autres modules.