info:bdd:sqlphp

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

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:01] – [BDD - MySQL et PHP] philinfo:bdd:sqlphp [2024/08/28 17:17] (Version actuelle) – [2.4 Fermeture de la connexion] phil
Ligne 1: Ligne 1:
-[[info:bdd:accueilbdd|{{ :iconemaison.jpg?nolink&30|Sommaire Bdd}}]]+[[info:bdd:accueilbdd|{{ :iconemaison.jpg?nolink&25|Sommaire Bdd}}]]
  
 ===== BDD - MySQL et PHP ===== ===== BDD - MySQL et PHP =====
  
-[Mise à jour le 10/8/2021]+[Mise à jour le 28/8/2024]
  
 ** Sources ** ** Sources **
Ligne 27: Ligne 27:
 {{ :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 ====
Ligne 35: Ligne 35:
   - **Traitement** du résultat des requêtes   - **Traitement** du résultat des requêtes
   - **Fermeture** de la connexion   - **Fermeture** de la connexion
 +\\
 === 2.1 Connexion à la base === === 2.1 Connexion à la base ===
 {{ :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
Ligne 50: Ligne 50:
 $bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', '');  $bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', ''); 
 </code> </code>
-\\+
   * //Exemple 2// : Même connexion avec la gestion des d'erreurs   * //Exemple 2// : Même connexion avec la gestion des d'erreurs
 <code php *.php> <code php *.php>
Ligne 64: Ligne 64:
  
 === 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> 
  
-== Cas 1 =+<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> 
-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)
Ligne 80: Ligne 80:
 {{ :web:ex2table.png?nolink |}} {{ :web:ex2table.png?nolink |}}
  
-== Cas 2 == +**Cas 2** - Si la requête **retourne un résultat** (SELECT, etc.), on utilise la méthode //query()//.
-Si la requête **retourne un résultat** (SELECT, etc.), on utilise la méthode //query()//.+
  
   * //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 
Ligne 96: Ligne 95:
     * The Rocketeer - Michel - 2     * The Rocketeer - Michel - 2
     * Ice Hockey - Michel - 7     * Ice Hockey - Michel - 7
 +\\
 === 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>
Ligne 107: Ligne 107:
 $nb contient le nombre de lignes modifiées dans l'exemple de cas 1 précédent. Cette valeur pourra être testée pour valider la requête. \\ $nb contient le nombre de lignes modifiées dans l'exemple de cas 1 précédent. Cette valeur pourra être testée pour valider la requête. \\
 \\ \\
-=== 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 +
-  * pouvant être indicé si type = PDO::FETCH_NUM +
-  * dont les clés sont les noms des colonnes de la table interrogée si type = PDO::FETCH_ASSOC +
-  * dont les clés sont mixtes si type = PDO::FETCH_BOTH +
- +
-Pour lire toutes les lignes du résultat, il faut créer une boucle while qui lit chaque ligne.+
  
 +  * //Syntaxe// \\ //array// nomResultat **->** fetch(//integer// type); \\ \\ Cette méthode retourne un tableau  :
 +    * pouvant être indicé si type = PDO::FETCH_NUM
 +    * dont les clés sont les noms des colonnes de la table interrogée si type = PDO::FETCH_ASSOC
 +    * dont les clés sont mixtes si type = PDO::FETCH_BOTH \\ 
 +\\ Pour lire toutes les lignes du résultat, il faut créer une boucle while qui lit chaque ligne.
   * //Exemple//   * //Exemple//
 <code php *.php> <code php *.php>
Ligne 125: Ligne 122:
 } }
 </code> </code>
- +    * //Résultats//  
-  * //Résultats//  +      * Super Mario Bros - Laurent - 4 
-    * Super Mario Bros - Laurent - 4 +      * The Rocketeer - Michel - 2 
-    * The Rocketeer - Michel - 2 +      * Ice Hockey - Michel - 7
-    * Ice Hockey - Michel - 7+
  
 === 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//
  • info/bdd/sqlphp.1628676084.txt.gz
  • Dernière modification : 2021/08/11 12:01
  • de phil