8.101 Fonctions PDO
8 Référence des fonctions
Manuel PHP
. Introduction . Installation . Configuration à l'exécution . Drivers PDO ->Connexions et gestionnaire de connexion . Transactions et validation automatique (auto-commit) . Requêtes préparées et procédures stockées . Erreurs et gestionnaire des erreurs . Les objets larges (LOBs) . Classes pré-définies . Constantes pré-définies . PDO::beginTransaction . PDO::commit . PDO::__construct . PDO::errorCode . PDO::errorInfo . PDO::exec . PDO::getAttribute . PDO::getAvailableDrivers . PDO::lastInsertId . PDO::prepare . PDO::query . PDO::quote . PDO::rollBack . PDO::setAttribute . PDOStatement::bindColumn . PDOStatement::bindParam . PDOStatement::bindValue . PDOStatement::closeCursor . PDOStatement::columnCount . PDOStatement::errorCode . PDOStatement::errorInfo . PDOStatement::execute . PDOStatement::fetch . PDOStatement::fetchAll . PDOStatement::fetchColumn . PDOStatement::getAttribute . PDOStatement::getColumnMeta . PDOStatement::nextRowset . PDOStatement::rowCount . PDOStatement::setAttribute . PDOStatement::setFetchMode
|
8.101.5 Connexions et gestionnaire de connexion
Les connexions sont établies en créant des instances de la classe de base de PDO.
Peut importe quel driver vous voulez utiliser ; vous utilisez toujours le nom
de la classe PDO. Le constructeur accepte des paramètres pour spécifier
la source de la base de données (connue en tant que DSN) et optionnellement,
le nom d'utilisateur et le mot de passe (s'il y en a un).
| Connexion à MySQL |
<?php $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass); ?>
|
S'il y a des erreurs de connexion, un objet
PDOException
est lançé. Vous pouvez attrapper cette exception si vous voulez gérer
cette erreur, ou laisser le gestionnaire globale d'exception défini
via la fonction
set_exception_handler
la traiter.
| Gestion des erreurs de connexion |
<?php 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 "Erreur ! : " . $e->getMessage() . "<br/>"; die(); } ?>
|
| Attention | |
Si votre application n'attrappe pas les exceptions lançé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 complets sur la connexion à la base de données,
incluant le nom d'utilisateur et le mot de passe. Il en est donc de votre responsabilité
d'attrapper cette exception, soit explicitement (via l'instruction
catch
)
ou implicitement via la fonction
set_exception_handler
.
|
Lorsque la connexion à la base de données a réussi, une instance de la classe
PDO est retourné à votre script. La connexion est active tant que l'objet PDO
l'est. Pour clôre la connexion, vous devez détruire l'objet en vous assurant que
toutes ses références sont effacées--vous pouvez faire celà en assignant
NULL
à la variable gérant l'objet. Si vous ne le faîtes pas explicitement, PHP fermera
automatiquement la connexion lorsque le script arrivera à la fin.
| Fermeture d'un connexion |
<?php $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass); // utiliser la connexion ici
// et maintenant, fermez-la ! $dbh = null; ?>
|
Beaucoup d'applications web utilisent des connexions persistantes aux serveurs
de base 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 paramètres. 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, rendant l'application web plus rapide.
| Connexions persistantes |
<?php $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass, array( PDO::ATTR_PERSISTENT => true )); ?>
|
| Note | |
Si vous utilisez le driver PDO ODBC et que votre bibliothèque ODBC supporte
le pool de connexion ODBC (unixODBC et Windows le supportent tous les deux ;
peut être plus), alors, il est recommandé de ne pas utiliser les connexions persistantes
PDO mais plutôt laisser le pool de connexion ODBC mettre en cache les connexions.
Le pool de connexion ODBC est partagé avec les 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.
|
|