Utiliser SQLite3 en PHP avec PDO

Février 2013

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 supportenabled
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 !

8 commentaires :
commentaire n°2793 par leys
leys jeudi 10 avril 2014, 23:30
Hi,

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 !
commentaire n°2801 par Galdon
Galdon mercredi 16 avril 2014, 23:25
En effet, c'est corrigé, merci.
commentaire n°2992 par jeanjeanjean
jeanjeanjean mercredi 4 février 2015, 00:47
salut petite correction :

remplacer :
$stmt = $pdo->prepare("SELECT * FROM inscription WHERE titre = :titre");

en :

$stmt = $pdo->prepare("SELECT * FROM posts WHERE titre = :titre");
commentaire n°2999 par Galdon
Galdon jeudi 12 février 2015, 14:44
En effet, c'est corrigé, merci pour l'info.
commentaire n°3085 par joreveur
joreveur dimanche 31 mai 2015, 08:27
Bel article !
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

commentaire n°3091 par Galdon
Galdon samedi 13 juin 2015, 17:59
Dans $_POST['titre'], tout simplement.
commentaire n°3328 par BLOLAJOIE
BLOLAJOIE mercredi 8 juin 2016, 17:23
je voudrais savoir ou et comment utilise t-on sqlite?
commentaire n°3329 par BLOLAJOIE
BLOLAJOIE mercredi 8 juin 2016, 17:26
je voudrais faire une application de bureau avec php desktop,et je voudrais utiliser sqlite. comment et ou utilis t-on sqlite? aidez moi svp! merci
facultatif
Facebook Twitter RSS Email
Forum Excel
Venez découvrir le nouveau forum excel question/réponse à la stackoverflow.com !
Forum Excel
hit parade n'en a rien a foutre du W3C Positionnement et Statistiques Gratuites Vincent Paré