PDO (PHP Data Objects)

Programming / Database Management · notes

<!-- Slide number: 1 -->

PDO

Préparé par : Ouali Mohamed

2015/2016

<!-- Slide number: 2 -->

PDO

PDO : PHP Data Objects

Extension PHP fournissant une interface pour accéder à une base de données

Interface orientée objet

<!-- Slide number: 3 -->

Bases de données supportées

| Bases de données supportées |

| --- |

| FreeTDS / Microsoft SQL Server / Sybase |

| Firebird/Interbase 6 |

| IBM DB2 |

| IBM Informix Dynamic Server |

| MySQL 3.x/4.x/5.x |

| Oracle Call Interface |

| ODBC v3 (IBM DB2, unixODBC et win32 ODBC) |

| PostgreSQL |

| SQLite 3 et SQLite 2 |

| 4D |

<!-- Slide number: 4 -->

Les méthodes

exec(), prepare(), query()

errorCode(), errorInfo()

fetch(), fetchAll(), fetchColumn(), fetchObject(), setFetchMode(), nextRowset()

rowCount(), columnCount(),

Publicité

execute()

Etc.

<!-- Slide number: 5 -->

Se connecter à MySQL

le nom de l'hôte

l'adresse de l'ordinateur où MySQL est installé

Le nom de la base de données

à laquelle on veut se connecter

Le nom d’utilisateur ou login

il permet de vous identifier au niveau du serveur

Le mot de passe

« En local ». le nom de l'hôte sera localhost., le login est root et il n'y a pas de mot de passe.

<!-- Slide number: 6 -->

Se connecter à MySQL avec PDO

Instanciation d'un objet PDO en fournissant les informations nécessaires.

<?php

$bdd = new PDO('mysql:host=localhost;dbname=projet;charset=utf8', 'root', '');

?>

$bdd est un objet qui représente la connexion à la base de données

<!-- Slide number: 7 -->

Exécution d’une requête

PDO supporte de nombreuses méthodes de soumission de requêtes.

$reponse = $bdd->query('Votre requête');

$bdd est l’objet PDO déjà créé

Votre requête est une requête SQL standard (SELECT, …)

$reponse contient maintenant la réponse de MySQL.

<!-- Slide number: 8 -->

Exécution d’une requête

Exemple :

Publicité

$reponse = $bdd->query('SELECT id,nom,email FROM personne');

| id | nom | email |

| --- | --- | --- |

| 1 | Ouali | [email protected] |

| 2 | Hafedh | [email protected] |

| 3 | Abidi | [email protected] |

| 4 | Houcem | [email protected] |

$reponse

<!-- Slide number: 9 -->

Afficher le résultat d'une requête

Pour récupérer une entrée, on prend la réponse de MySQL et on y exécute fetch(), ce qui nous renvoie la première ligne

$donnees = $reponse->fetch();

$donnees est un tableau (array) qui contient champ par champ les valeurs de la première entrée

| id | nom | email |

| --- | --- | --- |

| 1 | Ouali | [email protected] |

$donnees

<!-- Slide number: 10 -->

Afficher le résultat d'une requête

Il faut faire une boucle pour parcourir les entrées une à une.

Chaque fois que vous appelez $reponse->fetch(), vous passez à l'entrée suivante.

La boucle est donc répétée autant de fois qu'il y a d'entrées dans votre table

$reponse = $bdd->query('SELECT nom FROM personne');

while ($donnees = $reponse->fetch())

{

echo $donnees['nom'] . '<br />';

}

<!-- Slide number: 11 -->

Fermeture de la connexion à MySQL

Publicité

La connexion est active tant que l'objet PDO l'est

Pour clore la connexion, vous devez détruire l'objet en vous assurant que toutes ses références sont effacées

$bdd =null ; ou unset($bdd) ;

Si vous ne le faites pas explicitement, PHP fermera automatiquement la connexion lorsque le script arrivera à la fin

<!-- Slide number: 12 -->

Insérer des données

on va utiliser exec() qui est prévue pour exécuter des modifications sur la base de données

$bdd->exec( " INSERT INTO personne (nom, email)

VALUES ('Wissam', '[email protected]')

");

<!-- Slide number: 13 -->

Modifier des données

on va utiliser exec() qui est prévue pour exécuter des modifications sur la base de données

$nb_modifs = $bdd->exec(  "UPDATE personne

SET email=‘[email protected]'

WHERE nom=‘Wissam'

");

echo $nb_modifs . ' entrées ont été modifiées !';

<!-- Slide number: 14 -->

Supprimer des données

on va utiliser exec() qui est prévue pour exécuter des modifications sur la base de données

$nb_supp = $bdd->exec( "DELETE FROM personne

WHERE nom=‘Wissam'

");

echo $nb_supp . ' entrées supprimées !'