Tutoriel vidéo PHP : L'objet PDO en PHP

Dans ce tutoriel vidéo vous découvrirez l'objet PDO. Cette objet vous permet de communiquer facilement avec plusieurs type de base de donnée et simplifie l'utilisation de fonctions avancées...

Tags : PhpMysqlBase de donnéeObjetPdo

Tutoriel PHP posté Dimanche 06 Juin 2010
 29 Commentaires
Ils l'ont utilisé
Vos commentaires

neirda33 (Dimanche 06 Juin 2010 à 13:19):

Aaah ! Exactement ce que je voulais ! Merci !

Wapaca (Dimanche 06 Juin 2010 à 13:28):

Merci pour ce tuto

Site-waide.fr (Dimanche 06 Juin 2010 à 13:37):

Cool , depuis le temps que c'est recommende pour l'utilisation de mysql ^^"

Néandre (Dimanche 06 Juin 2010 à 14:11):

Merci bien,
J'en connaissais bien peu en fait.

Corentin (Dimanche 06 Juin 2010 à 14:26):

Jolie j'en avais juste besoin ...

jbou43 (Dimanche 06 Juin 2010 à 14:29):

Merci Merci pour ce tuto.

Juice (Dimanche 06 Juin 2010 à 14:47):

Super sympa comme tutoriel, merci.

Au fait, ton IDE, c'est toujours Komodo ? Parce que le thème à l'air bien sympa.

Pobourger (Dimanche 06 Juin 2010 à 15:55):

Non, c'est NetBeans

radah (Dimanche 06 Juin 2010 à 20:07):

très intéressant comme tutoriel merci.

arde (Lundi 07 Juin 2010 à 01:05):

bonjour,
super comme d'habitude tes tutos !
J'ai une question, si par exemple si on a besoin de recouperer des donnes de deux tables par exemple comment il faut faire??

Je dois faire deux requetes ou avec une seul c'est possible ?

Pour ilustrer ma question:
J'ai deux tables une avec mes rubriques principales de mon site et une deuxieme avec les sous rubriques, et du coup je veux recouperer les données de deux tables
d'abord pour ecrire mes rubriques et seconde pour ecrire toutes les sous rubriques de chaque rubrique du type :

RUBRIQUE
sous-rubrique
sous-rubrique
RUBRIQUE
sous-rubrique
sous-rubrique
sous-rubrique
RUBRIQUE
sous-rubrique
sous-rubrique

Je remercie par avance votre aide .

Tchao







OverSpeed (Lundi 07 Juin 2010 à 18:11):

A mon avis, il si pour une rubrique tu a une table, il suffit de faire un while. En gros ça donnerais ça : http://overspeed001.pastebin.com/itn66dkJ (je l'ai mis sur Pastebin pour pas avoir à scroller comme un fou).

arde (Mercredi 09 Juin 2010 à 00:02):

Bonjour, je te remercie pour ton conseil , je vais tester au plus vite. a bientot

Eathan (Jeudi 10 Juin 2010 à 02:15):

Bonsoir =)

PDO possède une autre de fonction qui s'occupe de rapatrier l'ensemble des résultats d'une requête, à savoir "fetchAll()".

Donc pour votre exemple, afin de limiter au maximum les accès à la base de données (optimisation des performances), il faut utiliser la syntaxe SQL "JOIN" ("LEFT JOIN" dans l'exemple qui suit), récupérer tous les résultats dans une variable et les traiter dans une boucle "foreach".

Dans votre cas, la requête pourrait ressembler à ceci : $sql="SELECT * FROM sousRubrique sr LEFT JOIN rubrique r ON r.idRubrique=sr.rubrique_id ORDER BY nomRubrique";. Puis, on exécute la requête : $req=$pdo->query($sql); et enfin, on récupère le tout dans une variable : $res=$req->fetchAll();.

Il reste alors à boucler sur $res grâce à : foreach($res as $ligne){...} et à traiter le tout pour avoir l'affichage désiré.

Note : la requête ci-dessus est à adapter selon vos nom de champs et, idéalement, il ne faudrait pas faire un "SELECT * ..." mais sélectionner les champs requis avec plus de précision (juste les noms des sous-rubrique et des rubriques, par exemple).

Bonne soirée!

Eathan (Jeudi 10 Juin 2010 à 02:40):

Bonsoir =)

Merci pour cette initiation à PDO, c'est une base qui sera utile à pas mal de monde.

PDO à été intégré à PHP à partir de la version 5.1 (ce fut d'ailleurs la raison principale de la sortie de cette version mineure).

Ce tutoriel, comme les autres présents sur votre site est clair et bien conçu, mais je trouve dommage de ne pas avoir présenté la méthode "fetchAll()", sans doute la plus utilisée lorsqu'il y a de multiples résultats découlant d'une requête.

De plus, sans passer par la gestion des "Exception", il est relativement simple de vérifier si oui ou non une requête est correcte et si elle renvoie des résultats (le try/catch à la création de l'objet est cependant recommandé).

En effet, en prenant comme exemple un objet PDO "$pdo" et une requête sql "$sql" en faisant un simple "if($req=$pdo->query($sql)){...}else{print_r($pdo-errorInfo());}", on vérifie si la requête est correcte et on affiche directement l'erreur renvoyée par le driver.

De même, tenant compte de l'exemple précédent, un "if($res=$req->fetchAll()){...}else{echo 'Pas de résultat';}" permettra de savoir s'il oui ou non il y a des résultats (et agir en conséquence, sans passer par un "SELECT COUNT(*)..." superflu).

Dernière chose : quel dommage de ne pas avoir démontré la puissance de la petite méthode "$pdo->lastInsertId()" dont on a souvent tellement besoin. Cette dernière renvoie l'identifiant de la dernière ligne insérée.

Bonne soirée!

Eathan (Jeudi 10 Juin 2010 à 02:42):

Bonsoir =)

J'ai du faire une mauvaise manipulation et mon précédent message ne devrait pas se trouver ici, car ce n'était pas une réponse à un commentaire, mais bien un commentaire en soi.

Bonne soirée!

lioninho (Mardi 08 Juin 2010 à 14:00):

Juste pour savoir, l'IDE que tu utilises. Merci! encore merci pour le Tuto!!!

Wapaca (Mardi 08 Juin 2010 à 20:42):

J'ai une question :

Il ne faut pas fermer la connexion à la BDD avec un équivalent de mysql_close() en PDO ???

Eathan (Jeudi 10 Juin 2010 à 01:57):

Bonsoir =)

PDO s'occupe de lui même de fermer les connexions à la base de données en toute fin de script, automatiquement.

Bonne soirée.

OverSpeed (Mardi 08 Juin 2010 à 22:06):

Lioninho : C'est NetBeans PHP il me semble.
Wapaca : si tu a ça : $req = "SELECT * FROM tutoriels"; pour fermer la requete tu fais $req->CloseCursor(); je crois.

KaKuZa` (Jeudi 10 Juin 2010 à 09:58):

il serait plus juste de faire

die('Erreur : ' . $e->getMessage());

plutôt que echo(); non ?

iveinsomnia (Vendredi 11 Juin 2010 à 12:42):

Chouette ! Vivement le tuto sur Vimeo (Daily me fais la gueule ¬¬)

mouflam (Mardi 29 Juin 2010 à 06:58):

bonjour;
moi j'ai essayé de me mettre à la PDO au lieu du prodédural, mais il m'affiche un message d'erreur (le code est correct ) il me dit que la methode fetch() de l'objet PDO n'existe pas alors que l'extension php_pdo_mysql est activée sur wamp.
mais question est la suivante : est ce qu'on doit activer l'extension autrement que par la petite icone de wamp sur ma barre inférieur PHP->PHP extensions ->php_pdo_mysql
merci d'avance

R-transat (Mardi 29 Juin 2010 à 17:01):

Merci pour le tuto ^^

Par contre j'aimerais inclure la connexion à la base de donnée une seule fois sans àa chaque fois recréer l'objet PDO.

Avant sans PDO je faisais un fichier config.php avec mes identifiants serveur et je faisait un include de ce fichier pour utiliser mysql mais si je fais pareil avec PDO il me dit que l'objet PDO n'existe pas...

Mettre à chaque fois : (dans chaque fonction)
$bdd = new PDO('mysql:host=localhost;dbname=module', 'root', '');
C'est embêtant.

mouflam (Mercredi 30 Juin 2010 à 06:56):

bonour a tous encore une fois
j'ai essayé de me mettre à la PDO au lieu du prodédural, mais il m'affiche un message d'erreur (le code est correct ) il me dit que la methode fetch() de l'objet PDO n'existe pas alors que l'extension php_pdo_mysql est activée sur wamp.
ma question est la suivante : est ce qu'on doit activer l'extension autrement que par la petite icone de wamp sur ma barre inférieur PHP->PHP extensions ->php_pdo_mysql
merci d'avance

@ntonin (Dimanche 04 Juillet 2010 à 08:59):

Comme toujours un excellent tutoriel qui m'a permis de saisir l'utilité et la facilité de PDO pour les connexions et requêtes MySQL comme pour le repérage d'erreurs.
Juste une légère remarque : les noms de variables ne sont pas toujours explicite.
@ntonin
P.S : 18/20

Mister-Dydy7o (Samedi 07 Août 2010 à 22:34):

Bonjour Grafikart !
Merci pour ton super tuto , qui m'a permi de mieux m'y retrouver dans mon code !!
Cependant , j'aimerais savoir en PDO , quel est l'équivalent de mysql_num_rows ?
Merci d'avance !!

Griffon974 (Mardi 10 Août 2010 à 09:00):

Il serait aussi possible de mettre en chaque fin de requête des "$req->closeCursor()" ^^".

Cordialement, Griffon974

steph (Lundi 23 Août 2010 à 22:30):

Il ne manquerait pas un $DB->commit(); avant le $DB->callback(); dans le dernier exemple ?

steph (Lundi 23 Août 2010 à 22:31):

Il ne manquerait pas un $DB->commit(); avant le $DB->rollback(); dans le dernier exemple ?

 

Ajouter un commentaire

Si vous rencontrez un problème avec votre code et que vous avez une question spécifique utilisez plutôt les questions pour avoir une réponses rapide.

Vous devez activer javascript.
 

 

Suivre les commentaires de ce tutoriel