Outils pour utilisateurs

Outils du site


informatique:programmation:php:database

Différences

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

Lien vers cette vue comparative

Prochaine révision
Révision précédente
informatique:programmation:php:database [2011/10/18 16:31] – créée benoitinformatique:programmation:php:database [2011/10/30 13:41] (Version actuelle) – benoit
Ligne 1: Ligne 1:
 ===== Base de données ===== ===== Base de données =====
 +===== 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');
 +
 +    // 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
informatique/programmation/php/database.1318955506.txt.gz · Dernière modification : (modification externe)