Médiaforma

All posts tagged pdo

Nous allons établir une connexion avec la table testtable de la base testconsole définie dans une section précédente. Si vous avez supprimé cette table, créez-la dans la console MySQL et insérez-y les données suivantes :

Pierre, Dubur, 34, NOW()
Chantal, Garnier, 128, NOM()
Jean, Dupont, 2, NOW()
Belle, Vercor, 45, NOW()

La connexion avec la base de données se fait en créant une instance de la classe PDO :

$base = new PDO('mysql:host=nomserveur; dbname=nombase', 'nomutilisateur', 'motdepasse');

Où :

  • nomserveur est le nom du serveur de base de données ;
  • nombase est le nom de la base de données ;
  • nomutilisateur est le nom d’utilisateur avec lequel se connecter sur la base de données ;
  • motdepasse est le mot de passe associé au nom d’utilisateur choisi.

Par exemple, pour se connecter sur la base testconsole du serveur localhost en utilisant le nom d’utilisateur root auquel aucun mot de passe n’est associé, vous utiliserez l’instruction suivante :

$base = new PDO(‘mysql:host=localhost; dbname=testconsole’, ‘root’, ”);

Pour identifier les erreurs qui pourraient se produire sur cette instruction, vous utiliserez une structure try catch :

<?php
  try {
    $base = new PDO('mysql:host=localhost; dbname=testconsole', 'root', '');
  }
  catch(exception $e) {
    die('Erreur '.$e->getMessage());
  }
?>

Exécutez ce code. Si aucun message d’erreur n’est affiché, la base de données est bien accessible.

Avant de lire les données dans la base de données, vous allez indiquer l’encodage à utiliser avec la méthode exec() :

$base->exec("SET CHARACTER SET utf8");

Pour lire les données contenues dans une table, vous utiliserez une requête SQL. Cette requête sera passé à l’objet PDO $base avec la méthode query() :

$retour = $base->query('requete');

Où requête est la requête SQL à exécuter.

Par exemple, pour obtenir toutes les données de la table testtable, vous utiliserez l’instruction suivante :

$retour = $base->query('SELECT * FROM testtable');

Il ne reste plus qu’à traiter les données retournées avec une boucle while :

while ($data = $retour->fetch()){
  echo $data['prenom'].' '.$data['nom'].' : connecté '.$data['compteurvisite'].' fois (dernière connexion le '.$data['dernierevisite'].')<br>';
}

Lorsque les données auront été extraites de la base de données, vous pourrez supprimer l’objet PDO $base pour mettre fin à la connexion :

$base = null;

Voici le code complet :

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>Accès à la bdd testconsole avec PDO</title>
  </head>
  <body>
    <?php
      try {
        $base = new PDO('mysql:host=localhost; dbname=testconsole', 'root', '');
      }
      catch(exception $e) {
        die('Erreur '.$e->getMessage());
      }
      $base->exec("SET CHARACTER SET utf8");
      $retour = $base->query('SELECT * FROM testtable');
      while ($data = $retour->fetch()){
        echo $data['prenom'].' '.$data['nom'].' : connecté '.$data['compteurvisite'].' fois (dernière connexion le '.$data['dernierevisite'].')<br>';
      }
      $base = null;
    ?>
  </body>
</html>

La boîte de dialogue est bien accessible et la requête produit plusieurs enregistrements qui sont affichés sur l’écran avec l’instruction echo


Pour se connecter à une base de données MySQL, nous utiliserons une approche objet avec l’extension PDO (PHP Data Object). La technique étudiée ici est utilisable sur d’autres bases de données. Par exemple PostgreSQL ou Oracle.

Activer PDO

Avant de pouvoir utiliser PDO, vous devez activer cette extension. En principe, elle devrait être activée par défaut par WampServer. Pour le vérifier, cliquez sur l’icône de WampServer dans la zone de notification, pointez PHP puis Extensions PHP. Une coche devrait être affichée devant php_pdo_mysql, comme dans la figure ci-contre.

Si l’extension php_pdo_mysql n’est pas précédée d’une coche, cliquez dessus, fermez puis redémarrez WampServer. L’extension php_pdo_mysql devrait maintenant être activée.

Remarque
Si vous n’utilisez pas WampServer, vous pouvez activer/désactiver l’extension php_mysql en agissant sur le fichier php.ini (dossier Apache 2.x.x\bin\). Recherchez la ligne contenant le terme “php_pdo_mysql”. Supprimez le “;” qui la précède pour activer l’extension ou insérez un “;” pour la désactiver. Ici par exemple, l’extension php_pdo_mysql est active :