Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente |
info:bdd:sqlphp [2021/08/11 12:10] – phil | info:bdd:sqlphp [2024/08/28 17:17] (Version actuelle) – [2.4 Fermeture de la connexion] phil |
---|
===== BDD - MySQL et PHP ===== | ===== BDD - MySQL et PHP ===== |
| |
[Mise à jour le 10/8/2021] | [Mise à jour le 28/8/2024] |
| |
** Sources ** | ** Sources ** |
{{ :web:extable.png?nolink |}} | {{ :web:extable.png?nolink |}} |
| |
<note tip>On utilise le SGBD MySQL pour les exemples de la base //test//. La table jeux_video peut être téléchargé [[https://webge.fr/doc/wikis/code/web/WEB_TABLE_MSQL_jeux_video.zip|ici]].</note> | <callout type="tip" title="jeux_video" icon="true">On utilise le SGBD MySQL pour les exemples de la base //test//. La table jeux_video peut être téléchargé [[https://webge.fr/doc/wikis/code/web/WEB_TABLE_MSQL_jeux_video.zip|ici]].</callout> |
| |
==== 2. Accès à une base de données MySQL avec PHP ==== | ==== 2. Accès à une base de données MySQL avec PHP ==== |
{{ :web:cobjetbdd.png?nolink&100|}} | {{ :web:cobjetbdd.png?nolink&100|}} |
| |
<note>La connexion à la base se fait **une seule fois** en créant un **objet** de la classe PDO.</note> | <callout type="primary" title="Connexion" icon="true">La connexion à la base se fait **une seule fois** en créant un **objet** de la classe PDO.</callout> |
| |
* //Syntaxe// \\ nomConnect = **new PDO**('mysql:host=**$host** dbname=**$base**',user,pass); \\ | * //Syntaxe// \\ nomConnect = **new PDO**('mysql:host=**$host** dbname=**$base**',user,pass); \\ |
| |
<note>L'objet //$<nomConnect>// représente la connexion au serveur. Il est utilisé pour toutes les opérations à effectuer sur la base.</note> | <callout type="default" title="Objet PDO" icon="true">L'objet //$<nomConnect>// représente la connexion au serveur. Il est utilisé pour toutes les opérations à effectuer sur la base.</callout> |
| |
* //Exemple 1 // : Connexion à la base //test// avec le login //root//, sans mot de passe et sans la gestion des erreurs | * //Exemple 1 // : Connexion à la base //test// avec le login //root//, sans mot de passe et sans la gestion des erreurs |
| |
=== 2.2 Envoi d'une requête === | === 2.2 Envoi d'une requête === |
<note>L'information liée au bon fonctionnement de la requête ou son résultat sont placés dans une variable pour être traités.</note> | |
| <callout type="default" title="Variable" icon="true">L'information liée au bon fonctionnement de la requête ou son résultat sont placés dans une variable pour être traités.</callout> |
| |
**Cas 1** - Si la requête **ne retourne pas de résultat** (INSERT, UPDATE, DELETE, etc.), on utilise la méthode //exec()//. | **Cas 1** - Si la requête **ne retourne pas de résultat** (INSERT, UPDATE, DELETE, etc.), on utilise la méthode //exec()//. |
* //Syntaxe// \\ //integer// nomConnect **->** exec(//string// requete) \\ nomvar = nomConnect **->** exec(//string// requete) | * //Syntaxe// \\ //integer// nomConnect **->** exec(//string// requete) \\ nomvar = nomConnect **->** exec(//string// requete) |
| |
<note>**exec()** retourne un entier contenant le nombre de lignes concernées par la requête.</note> | <callout type="primary" title="Requête" icon="true">**exec()** retourne un entier contenant le nombre de lignes concernées par la requête.</callout> |
| |
* //Exemple// : modification du possesseur de la console NES identifiée par ID=1 (Initialement Florent) | * //Exemple// : modification du possesseur de la console NES identifiée par ID=1 (Initialement Florent) |
* //Syntaxe// \\ //object// nomConnect **->** query(//string// requete) \\ nomResultat = nomConnect **->** query(//string// requete) | * //Syntaxe// \\ //object// nomConnect **->** query(//string// requete) \\ nomResultat = nomConnect **->** query(//string// requete) |
| |
<note>Retourne FALSE en cas d'erreur ou un objet représentant l'ensemble des lignes de résultat.</note> | <callout type="default" title="Erreur" icon="true">Retourne FALSE en cas d'erreur ou un objet représentant l'ensemble des lignes de résultat.</callout> |
| |
* //Exemple// : //reponse// reçoit le résultat de la requête | * //Exemple// : //reponse// reçoit le résultat de la requête |
=== 2.3 Traitement du résultat de la requête === | === 2.3 Traitement du résultat de la requête === |
* **Insertion, suppression, mise à jour** | * **Insertion, suppression, mise à jour** |
<note>Pour les opérations d'insertion, de suppression ou de mise à jour des données dans une base, il est utile de vérifier si la requête a bien été exécutée.</note> | |
| <callout type="primary" title="Vérification" icon="true">Pour les opérations d'insertion, de suppression ou de mise à jour des données dans une base, il est utile de vérifier si la requête a bien été exécutée.</callout> |
| |
<code php *.php> | <code php *.php> |
\\ | \\ |
* **Résultat d'une commande SELECT** | * **Résultat d'une commande SELECT** |
<note>Lorsqu'il s'agit de lire le résultat d'une requête contenant la commande //SELECT//, la méthode //query()// retourne un objet de type //PDOStatement// ($reponse dans les exemples). La classe //PDOStatement// dispose de méthodes permettant de récupérer des données. La méthode des objets //PDOStatement// couramment utilisée pour lire des données est //**fetch**()//.</note> | Pour les opérations d'insertion, de suppression ou de mise à jour des données dans une base, il est utile de vérifier si la requête a bien été exécutée. |
| <callout type="primary" title="SELECT" icon="true">Lorsqu'il s'agit de lire le résultat d'une requête contenant la commande //SELECT//, la méthode //query()// retourne un objet de type //PDOStatement// ($reponse dans les exemples). La classe //PDOStatement// dispose de méthodes permettant de récupérer des données. La méthode des objets //PDOStatement// couramment utilisée pour lire des données est //**fetch**()//.</callout> |
| |
* //Syntaxe// \\ //array// nomResultat **->** fetch(//integer// type); \\ \\ Cette méthode retourne un tableau : | * //Syntaxe// \\ //array// nomResultat **->** fetch(//integer// type); \\ \\ Cette méthode retourne un tableau : |
| |
=== 2.4 Fermeture de la connexion === | === 2.4 Fermeture de la connexion === |
<note>Pour clore la connexion, il suffit de détruire l'objet en assignant NULL à la variable qui le gère. Si ce n'est pas fait explicitement, PHP fermera automatiquement la connexion lorsque le script arrivera à la fin.</note> | <callout type="primary" title="NULL" icon="true">Pour clore la connexion, il suffit de détruire l'objet en assignant **NULL** à la variable qui le gère. Si ce n'est pas fait explicitement, PHP fermera automatiquement la connexion lorsque le script arrivera à la fin.</callout> |
| |
* //Exemple// | * //Exemple// |