Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
informatique:programmation:php:database [2011/10/29 17:21] benoit |
informatique:programmation:php:database [2018/09/06 19:10] (Version actuelle) |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
===== Base de données ===== | ===== Base de données ===== | ||
- | ==== Connexion MySQL avec PDO ==== | + | ===== MySQL avec PDO ===== |
+ | ==== Lecture de données ==== | ||
+ | <sxh php> | ||
+ | <?php | ||
+ | // Les instructions dans le try et le catch sont requise pour eviter d'afficher le detail d'une erreur. Notamment le mot de passe vers la base données. | ||
+ | try | ||
+ | { | ||
+ | // On active les exceptions de PDO (a faire systematiquement) | ||
+ | $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION; | ||
+ | // Connexion à la base de données | ||
+ | $bdd = new PDO('mysql:host=localhost;dbname=testbs', 'testbs', 'testbs974'); | ||
- | ==== Connexion MySQL ancienne methode ==== | + | // Stockage des resultats dans un tableau sous la variable $reponse |
+ | $reponse = $bdd->query('SELECT * FROM jeux_video LIMIT 5'); | ||
+ | |||
+ | // Tant qu'il y a des éléments on affiche la donnée du champs 'nom' | ||
+ | while ($donnees = $reponse->fetch()) | ||
+ | { | ||
+ | echo $donnees['nom'].'<br />'; | ||
+ | } | ||
+ | |||
+ | $reponse->closeCursor(); // Termine le traitement de la requête | ||
+ | |||
+ | //Le methode query utilise ci-dessus n'est pas recommandé car elle pourrait permettre des injections SQL | ||
+ | //Utiliser plutôt me methode 'prepare' ci-dessous | ||
+ | //Voici nos deux variables à utiliser dans la requete SQL | ||
+ | $nom_possesseur = 'Florent'; | ||
+ | $prix_max = 20; | ||
+ | |||
+ | // On prepare la requete sans y faire figurer les deux variables. chaques ? représente une variable qui sera insérée dans la requete | ||
+ | $req = $bdd->prepare('SELECT nom, prix FROM jeux_video WHERE possesseur = ? AND prix <= ? ORDER BY prix'); | ||
+ | // On execute la requete en insérant les variables dans le même ordre que les ? | ||
+ | $req->execute(array($nom_possesseur, $prix_max)); | ||
+ | |||
+ | echo '<ul>'; | ||
+ | while ($donnees = $req->fetch()) | ||
+ | { | ||
+ | echo '<li>'.$donnees['nom'].' ('.$donnees['prix'].' EUR)</li>'; | ||
+ | } | ||
+ | echo '</ul>'; | ||
+ | $req->closeCursor(); | ||
+ | } | ||
+ | catch (Exception $e) | ||
+ | { | ||
+ | // Affichage de l'erreur si besoin | ||
+ | die('Erreur : '.$e->getMessage()); | ||
+ | } | ||
+ | ?> | ||
+ | </sxh> | ||
+ | |||
+ | ==== Insertion de données ==== | ||
+ | <sxh php> | ||
+ | <?php | ||
+ | try | ||
+ | { | ||
+ | $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION; | ||
+ | $bdd = new PDO('mysql:host=localhost;dbname=testbs', 'testbs', 'testbs974'); | ||
+ | |||
+ | // On prepare la requete | ||
+ | $req = $bdd->prepare('INSERT INTO jeux_video(nom, possesseur, console, prix, nbre_joueurs_max, commentaires) VALUE(:nom, :possesseur, :console, :prix, :nbre_joueurs_max, :commentaires)'); | ||
+ | // On execute la requete en renseignant les données. Les données peuvent être remplacées par des variables | ||
+ | $req->execute(array( | ||
+ | 'nom' => 'Battlefield 1942', | ||
+ | 'possesseur' => 'Patrick', | ||
+ | 'console' => 'PC', | ||
+ | 'prix' => 45, | ||
+ | 'nbre_joueurs_max' => 50, | ||
+ | 'commentaires' => '2nde guerre mondiale' | ||
+ | )); | ||
+ | } | ||
+ | catch (Exception $e) | ||
+ | { | ||
+ | die('Erreur : '.$e->getMessage()); | ||
+ | } | ||
+ | ?> | ||
+ | </sxh> | ||
+ | |||
+ | ===== MySQL ancienne methode ===== | ||
<sxh php> | <sxh php> | ||
<?php | <?php |