Votre guide dans les plaines du far-web

Formation développeur web


« Donne un poisson à un homme, tu le nourris pour un jour. Apprends-lui à pêcher, tu le nourris pour toujours. » Lao Tseu

Pré-requis

Mis à jour le

Voici ce qu'il faut maîtriser un minimum pour bien commencer ce cours :

  • les bases de PHP
  • super globales PHP
  • les bases de données
  • SQL
Important

PDO étant une classe, vous êtes censé être au minimum "initié" à la POO. En revanche, on peut découvrir PDO sans forcément avoir vu…

~~ Fin de l'extrait ~~

Présentation

Mis à jour le

Depuis PHP5, PDO (pour PHP Data Object) est devenu la méthode de travail standardisée de PHP pour travailler avec les bases de données. Auparavant, PHP offrait simplement des fonctions natives permettant de travailler facilement avec MySQL (tel que mysql_query()), ou bien quelques autres SGBDR. Bien que fonctionnelles et pratiques, ces…

~~ Fin de l'extrait ~~

Les trois classes de PDO

Mis à jour le

PDO est organisé autour de trois classes qui remplissent chacun un rôle bien distinct :

  1. la classe PDO : c'est la classe qui permet la connexion avec le système de base de données (gestion des drivers, authentification, etc...)
  2. la classe PDOStatement : c'est la classe qui va vous…
~~ Fin de l'extrait ~~

Se connecter à une base de données

Mis à jour le

Lorsque vous travaillez avec une base de données, vous utilisez un logiciel "extérieur" à PHP (le serveur de base de données). Il va donc falloir que PHP se connecte au serveur de base de données pour pouvoir échanger des informations avec celui-ci. PDO contient tous les éléments nécessaires à cela,…

~~ Fin de l'extrait ~~

Exécuter une requête SQL

Mis à jour le

Voici les deux méthodes standards qui permettent d'exécuter une requête SQL. Par "exécuter", on entend le fait de l'envoyer au serveur de base de données sur lequel PHP est connecté, et d'attendre une réponse de celui-ci.

Méthodes d'exécution d'une requête SQL non-préparée :


  • query() : vous permet d'exécuter un…
~~ Fin de l'extrait ~~

quote() et injections SQL

Mis à jour le

Quand vous recevez des informations saisies par l'utilisateur, vous ne savez pas trop ce que la personne a pu saisir comme données. Afin de protéger votre système d'une injection SQL, ou de potentiels caractères invalides (ex : des guillemets), vous pouvez appliquer la méthode quote() à vos futures…

~~ Fin de l'extrait ~~

Les requêtes préparées

Mis à jour le

La méthode prepare() de l'objet PDO vous permet de définir une requête, mais sans lui donner ses valeurs finales. Vous allez pouvoir déterminer les paramètres différenciant (ex : id = 2 / id = 3 / etc...) en leur donnant une clé qui sera remplacée par la vraie…

~~ Fin de l'extrait ~~

Lier des variables dans une requête

Mis à jour le

On peut aussi assigner des valeurs à des paramètres de requête SQL en utilisant les méthodes bindParam() ou bindValue(). Ces méthodes vous permettent de binder (lier) des variables avec des paramètres avant d'exécuter la requête. Cela peut être utile dans le cas ou beaucoup de code…

~~ Fin de l'extrait ~~

Exploiter les résultats d'une requête

Mis à jour le

Lorsqu'une requête est exécutée via PDO, PHP envoi la chaîne de caractère au SGBDR. Le SGBDR la traite, il va lire ou modifier les données contenues dans la base de données, puis va renvoyer une réponse à PHP. 

(image visible sur la plateforme de formation)


~~ Fin de l'extrait ~~

La méthode fetch()

Mis à jour le

La méthode fetch() est la plus simple de toute. Elle vous renvoie le premier enregistrement d'un jeu de résultat contenu dans la réponse de la bdd. 

Vous pouvez l'utiliser dans de deux manières :

  • soit vous n'attendez qu'une seule ligne de réponse…
~~ Fin de l'extrait ~~

La méthode fetchAll()

Mis à jour le

La méthode fetchAll() fonctionne à peu près de la même manière que fetch(), sauf qu'elle va vous renvoyer directement un tableau PHP contenant toutes les lignes de la réponse. Donc si vous avez plusieurs lignes à récupérer, vous n'aurez pas besoin d'itérer sur la méthode fetch() afin de parcourir les…

~~ Fin de l'extrait ~~

Exploiter les résultats des INSERT, DELETE, UPDATE

Mis à jour le

Lorsque l'on exécute des requêtes de type INSERT, UPDATE ou DELETE, on ne va pas récupérer de données à proprement parlé. C'est-à-dire que la requête ne génère pas de jeu de données à exploiter.

Voici quelques exemples :
  • INSERT : la bdd…
~~ Fin de l'extrait ~~

Débugger avec PDO

Mis à jour le

PDO offre des méthodes permettant de débugger facilement une requête qui aurait rencontrée un problème. Si par exemple vous avez fait une erreur de syntaxe dans votre requête, il sera impossible de l'exécuter dans votre SGBDR, et celui-ci renverra une erreur (avec un code erreur) vous permettant de cibler facilement…

~~ Fin de l'extrait ~~

Exercices

Mis à jour le

Voici quelques exercices pour s'entrainer avec PDO. Ils vont du plus simple au plus compliqué :

  1. annuaire : travail avec une seule table déjà remplie
  2. blogging : travail sur plusieurs tables déjà remplies
  3. système de votation : à vous de concevoir la base de donnée et de l'exploiter
~~ Fin de l'extrait ~~

Système de transaction : back to the future !

Mis à jour le

(image visible sur la plateforme de formation)

La gestion des transactions est un concept un peu plus avancé de PDO et des SGBDR. Pour faire simple, cela permet de simuler l'exécution d'un ensemble de requêtes, et de les exécuter seulement si tout s'est passé comme prévu.

~~ Fin de l'extrait ~~