Utiliser SQLite3 en PHP avec PDO
SQLite est un système de base de données qui a la particularité de fonctionner sans serveur. En PHP, on peut utiliser une base de données SQLite grâce à la librairie PDO (qui est la méthode d'accès aux bases de données la plus recommandée en PHP 5).
Activer le module PDO SQLite
La première étape est de vous assurer que l'extension PDO est activée sur votre serveur PHP, ainsi que l'extension PDO SQLite (car PDO fonctionne avec une extension centrale associée à différents adaptateurs pour les principaux SGBD du marché).
Pour cela, ouvrez votre fichier php.ini
et assurez-vous que ces lignes sont décommentées :
extension=php_pdo.dll [...] extension=php_pdo_sqlite.dll
Vous pouvez ensuite vérifier que l'extension est bien activée en utilisant la fonction phpinfo(), vous devriez alors voir sqlite et sqlite2 dans la liste :
PDO support | enabled |
---|---|
PDO drivers | mysql, sqlite, sqlite2 |
sqlite correspond à la dernière version : SQLite3, et il y a aussi le support de l'ancienne version : SQLite2. Dans ce tutoriel nous allons utiliser sqlite, autant prendre la dernière version qui offre de meilleures performances et plus de fonctionnalités.
Création et connexion à une base de données SQLite
La première étape et de se connecter à la base :
<?php try{ $pdo = new PDO('sqlite:'.dirname(__FILE__).'/database.sqlite'); $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // ERRMODE_WARNING | ERRMODE_EXCEPTION | ERRMODE_SILENT } catch(Exception $e) { echo "Impossible d'accéder à la base de données SQLite : ".$e->getMessage(); die(); } ?>
PDO va créer le fichier sqlite automatiquement si il n'existe pas.
Créer une table à la volée
Maintenant qu'on est connecté, il faut créer une table. SQLite permet même d'utiliser des requêtes pour créer une table seulement si celle-ci n'existe pas, évitant ainsi d'avoir à faire le test :
<?php $pdo->query("CREATE TABLE IF NOT EXISTS posts ( id INTEGER PRIMARY KEY AUTOINCREMENT, titre VARCHAR( 250 ), created DATETIME );"); ?>
Allez donc jeter un oeil sur cette page : réafficher une colonne masquée dans excel.
Ecrire des données avec INSERT
Une fois la table crée, il faut insérer des données dedans avec une requête INSERT. Pour cela on utilise des requêtes préparées comme le ferait avec MySQL (ce qui permet d'éviter les failles d'injection SQL) :
<?php $stmt = $pdo->prepare("INSERT INTO posts (titre, created) VALUES (:titre, :created)"); $result = $stmt->execute(array( 'titre' => "Lorem ipsum", 'created' => date("Y-m-d H:i:s") )); ?>
Pour les requêtes UPDATE (mise à jour) c'est exactement la même syntaxe (seul $stmt change).
Lire des données avec SELECT
Voici un petit exemple qui permet de lire des données :
<?php $stmt = $pdo->prepare("SELECT * FROM posts WHERE titre = :titre"); $stmt->execute(array('titre' => 'Lorem ipsum')); $result = $stmt->fetchAll(); print_r($result); ?>
Voilà, c'est tout ce qu'il faut savoir, amusez-vous bien !
Découvrez ce tutoriel photoshop : socière au bûcher à lire tout de suite !
Merci pour ce petit mémo bien sympa. Je colle une portion de code corrigé (manque les virgules sur l'array) :
$result = $stmt->execute(array(
'titre' => "Lorem ipsum",
'created' => date("Y-m-d H:i:s")
));
That's all folks !
remplacer :
$stmt = $pdo->prepare("SELECT * FROM inscription WHERE titre = :titre");
en :
$stmt = $pdo->prepare("SELECT * FROM posts WHERE titre = :titre");
en faisant un formulaire html simple style
<form method="post" action="maj.php">
Ajouter à la base l'info : <input type="text" name="titre"
<input type="submit" value="mettre à jour">
</form>
comment récupérer la valeur titre dans maj.php et mettre à jour la base
merci de vos conseils