PHP Facile!
existe aussi en version
SQL et XML
Sommaire

6.Le langage PHP

6.16.Utilisation de bases de données avec PHP

6.16.5.PDO: PHP Data Objects

6.16.5.5.Requête SQL ne retournant pas de résultat (ex: CREATE TABLE, INSERT, UPDATE, etc.)

Pour exécuter une requête SQL [c'est quoi?] nous pouvons faire appel à la méthode exec(). Cette méthode ne levera pas d'exception en cas d'erreur mais retournera la valeur FALSE. Il faudra alors faire appel à la méthode errorInfo() pour déterminer la nature de l'erreur.
errorInfo() retourne en fait un tableau indexé contenant
  • à l'index 0, un code d'erreur normalisée (une chaîne de 5 caractères).
  • à l'index 1, un code d'erreur propre à la base de données.
  • à l'index 2, le message d'erreur propre à la base de données.
<?php
require_once("pdo_conf_inc.php");

// Connexion
try {
    $bd = new PDO($pdo_dsn, $bd_user, $bd_pwd);
} catch (PDOException $e) {
    die("La connexion a la base via la chaine [".$pdo_dsn."] a echouee ".
        "pour la raison suivante: ".$e->getMessage());
}

// Ajout de données dans la table
$sql = "INSERT INTO demo (visiteur, datevisite) ".
            "VALUES ('phpfacile', '".date("Y-m-d H:i:s")."')";
$reponse = $bd->exec($sql);
if ($reponse === FALSE) {
    $errInfos = $bd->errorInfo();
    echo 'La requete a echouee pour la raison suivante: '.$errInfos[2];
} else {
    echo "Un nouvel enregistrement a ete ajoute a la base";
}

// Deconnexion
$bd = null;
?>
Ce script suppose que vous avez au préalable créé une table nommée "demo" possédant un champ visiteur de type chaîne de caractères (ex: VARCHAR(128)) et un champ datevisite de type chaîne de caractères (ex: VARCHAR(19)). Cela peut se faire en exécutant la requête suivante
CREATE TABLE demo (visiteur VARCHAR(64), datevisite VARCHAR(19))
ou en utilisant une interface graphique de gestion de le base (comme SQLiteManager pour SQLite [comment?] ou PHPMyAdmin pour MySQL [comment?] ).
  • La requête "CREATE TABLE" peut elle-même être exécutée
    • via un outil d'administration de le base
    • en modifiant la requête d'insertion du script présenté dans ce chapitre par la requête de création de base. Ce qui donne le code

6.16.5.6.Requête SQL retournant des résultats (ex: SELECT)

Pour une requête de type SELECT, nous ferons appel à la fonction query(). Cette méthode retourne un objet résultat (ici la variable $reponse) qui possède une méthode fetch() permettant de récupéré le premier résultat non lu.
<?php
require_once("pdo_conf_inc.php");

// Connexion
try {
    $bd = new PDO($pdo_dsn, $bd_user, $bd_pwd);
} catch (PDOException $e) {
    die("La connexion a la base via la chaine [".$pdo_dsn."] a echouee ".
        "pour la raison suivante: ".$e->getMessage());
}

// Lecture des donnees dans la table
$sql = "SELECT visiteur, datevisite FROM demo";
$reponse = $bd->query($sql);
if ($reponse === FALSE) {
    $errInfos = $bd->errorInfo();
    echo 'La requete a echouee pour la raison suivante: '.$errInfos[2];
} else {
    echo "Voici le contenu de la table demo:\n";
    while ($row = $reponse->fetch()) {
        echo $row['visiteur']." - ".$row['datevisite']."\n";
    }
}

// Deconnexion
$bd = null;
?>
Si vous exécutez ce script vous obtiendrez autant de résultats que de fois où vous avez lancé le script d'insertion précédent, avec à chaque fois la date de l'insertion.