 |
Sommaire
|
|
|
|
|
|
Usage standard
|
|
|
Comme l'on est en droit de l'attendre, utiliser PDO permet de se connecter à différentes bases de données avec une même fonction, en ne modifiant que certains arguments :
// SQLite
new PDO(‘sqlite:/chemin/vers/fichier_de_donnees’);
// MySQL
new PDO(‘mysql:host=localhost;dbname=basededonnees’, identifiant, motdepasse);
// PostgreSQL
new PDO(‘pgsql:host=localhost port=5432 dbname=basededonnees user=identifiant password=motdepasse’);
De fait, il devient possible de prévoir l'accès à plusieurs sources de données.
$dbid = 'identifiant';
$dbmdp = 'motdepasse';
$db = 'mysql:host=localhost;dbname=basededonnees';
try {
$cnx = new PDO($db, $dbid, $dbmdp);
}
catch (PDOException $dbex) {
die("Erreur de connexion : " . $dbex->getMessage() );
}
On pourra également leur assigner un nom, ou DSN (Data Source Name).
ini_set("pdn.dsn.mabase", "‘mysql:host=localhost;dbname=basededonnees’, identifiant, motdepasse");
try {
$cnx = new PDO("mabase");
}
catch (PDOException $dbex) {
die("Erreur de connexion : " . $dbex->getMessage() );
}
PDO s'utilise ensuite par le biais des méthodes de ses classes, dont les noms sont évocateurs : commit(), query(), exec(), fectch(), fetchColumn(), rowCount(), getInsertId(), rollBack()...
Une fois connecté à la base, ces méthodes sont accessibles pour toutes les requêtes habituelles :
$req = "INSERT INTO produits (nom, prix, exemplaires) VALUES ('Un lapin rose', 42, 210477)";
$cnx->exec($req);
$last_id = $cnx->lastInsertId();
$req = "SELECT * FROM produits";
$res = $cnx->query($req);
if ($res != FALSE) {
echo "Nous avons dans notre catalogue :<br/><ul>";
while ($row = $res->fetch()) {
echo "<li>$row->exemplaires $row->nom a $row->prix euros pièces</li>";
}
echo "</ul>";
}
$cnx = NULL;
Les méthodes exec() et query() sont les plus utilisées. query() est à utiliser dans le cas où la requête doit renvoyer des informations. Les deux renvoient FALSE en cas d'erreur. |