Présentation 14 - Connexion à une base de données en PHP

PDO: c'est quoi?

  • La classe PDO permet de se connecter avec presque toutes les bases de données

 

 

 

 

  • Requêtes SELECT, UPDATE, INSERT, DELETE
  • préparation des requêtes et transaction.

Pré-requis

  • Serveur Apache (wamp)
  • PHP > 5.1
  • Une base de données
  • Activer l'extension PDO ->

Initialiser PDO

//modèle de base de connexion PDO
$db = new PDO('mysql:host=localhost;dbname=bddexemple;charset=utf8mb4', 'user', 'pass');

// exemple dans votre cas
$db = new PDO('mysql:host=localhost;dbname='.DB_NAME.';charset=utf8mb4', DB_USERNAME, DB_PASSWORD);

Instancier l'objet PDO

  • mysql: indique qu'on utilise MySQL
  • host: serveur de BD, généralement localhost
  • dbname: nom de la base de données
  • user: nom de l'usager qui à la permission
  • passe: mot de passe de l'usager

Try ... Catch

L'utilisation de Try ... Catch vous permet:

  • Tester une instanciation, condition, etc.
  • Si une exception survient (erreur)
    • Afficher ou logguer l'erreur
    • Arrêter PHP 
try {
	$db = new PDO('mysql:host=localhost;dbname='.DB_NAME.';charset=utf8mb4', DB_USERNAME, DB_PASSWORD);
}
catch(PDOException $e) {
	echo "Impossible de se connecter!";
	die();
}

Create - INSERT

/* 1ère étape : les données */
$datas = array(
    'name' => "Vancouver",
    'description' => "C'est pas mal loin!"
);

/* 2ème étape : préparer la requête */
$sql = 'INSERT INTO cities (name, description) VALUE (:name, :description)';
$qry = $db->prepare($sql);

/* 3ème étape: On exécute la requête */
$qry->execute($datas);

Pour insérer une ligne dans une table

  • 1er: Avoir le tableau de données (peut être $_POST)
  • 2e: construction de la requête 
  • 3e: exécution de la requête

Read - SELECT

/* 1ère étape : les données */
$datas = array();
/* 2ème étape : préparer la requête */
$sql = "SELECT * FROM cities"; //le SQL
$qry = $db->prepare($sql);
/* 3ème étape: On exécute la requête */
$qry->execute($datas);
$cities = $qry->fetchAll(); //le résultat dans un tableau cities

//Boucle qui affiche les données
foreach ($cities as $city) {
    echo $city['name']."<br>";
}

Pour lire une ou des lignes d'une table

  • $sql: le code SQL qui provient soit de PHPMyAdmin
  • $qry: construction de la requête pour PDO
  • $cities: nom du tableau qui reçoit les données
  • ->fetchAll(): Méthode qui  va chercher les données

Update - UPDATE

/* 1ère étape : les données */
$datas = array(
  'id' => 2,
  'name' => "Saint-Lin"
);

/* 2ème étape : préparer la requête */
$sql = "UPDATE cities SET name = :name WHERE id=:id"; //le SQL
$qry = $db->prepare($sql);

/* 3ème étape: On exécute la requête */
$count = $qry->execute($datas);
echo "Nombre d'éléments mis à jour: ".$count."<br>"; //va afficher le nombre de lignes affectées

Pour mettre à jour une ou des lignes d'une table

  • $sql: le code SQL qui fait la mise à jour
  • $count : résultat de l’exécution de la requête SQL
  • ->execute(): Méthode qui  va exécuter le SQL

Delete - DELETE

/* 1ère étape : les données */
$datas = array(
	'id' => 3
);

/* 2ème étape : préparer la requête */
$sql = "DELETE FROM cities WHERE id=:id"; //le SQL
$qry = $db->prepare($sql);

/* 3ème étape: On exécute la requête */
$count = $qry->execute($datas);
echo "Nombre d'éléments effacés: ".$count."<br>"; //va afficher le nombre de lignes affectées

Pour effacer une ou des lignes d'une table

  • $sql: le code SQL qui fait la supression
  • $count : résultat de l’exécution de la requête SQL
  • ->execute(): Méthode qui  va exécuter le SQL
Made with Slides.com