Publié le 07/10/2014
Auteur BlackBear
Réseaux sociaux
0 partages
0 tweets
2 plus
3 commentaires

Base de données SQLite avec PDO et PHP

Dans un site internet, on a besoin de stocker de nombreuses données accessibles via PHP. Les bases de données SQLite combine les avantages d'une table MySql et la vitesse d'un accès fichier.

Définition du module libsqlite3

Pour ceux qui ne le connaissait pas en encore, SQLite est probablement le moteur de base de données le plus utilisé, la librairie est utilisée aussi bien sur un PC, sous Linux ou encore sur les smartphone. Contrairement à MySql, SQLite n'a pas besoin d'une architecture client/serveur pour fonctionner, les fonctions sont contenues dans une librairie et les données dans un fichier.
Premier chose à faire est de vérifier que l'extension est activée sous LAMP avec phpinfo(), il s'agit du module pdo_sqlite.

Comment installer sqlite3 ?
Par exemple sur une distribution Linux Ubuntu, lancer dans le terminal
sudo apt-get install sqlite3

La suite du tutoriel est construit à partir de l'utilisation de SQLite avec PDO. Avec de poursuivre, vérifiez que sqlite s'affiche bien lors du test des drivers supportés par PDO
<?php
foreach (PDO::getAvailableDrivers() as $pro_driver) {
    echo 'disponible: '.$pro_driver . '
'
; } ?>

Créer une table avec SQLite

Comme nous l'avons vu, la base SQLite fonctionne directement à partir d'un driver inclu dans PHP, nul besoin d'une communication avec un serveur. Il existe 2 modes pour créer des tables: les données sont stockées dans un fichier ou alors directement en mémoire avec new PDO('sqlite::memory:');

Pour créer un table, il suffit de se connecter avec PDO, le fichier est crée automatiquement. Les requêtes sont envoyées avec le langage SQL, de la même manière qu'avec MySQL. Par exemple pour une table membre, comportant un ID, le nom et la date d'inscription, la requete SQL est la suivante:

<?php
//Ouvrir ou créer la base de données member
$db = new PDO('sqlite:member.sqlite');
//Activer les exceptions
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
//Créer la table
$db->exec("CREATE TABLE IF NOT EXISTS TB_MEMBER (
                    ME_ID INTEGER PRIMARY KEY AUTOINCREMENT, 
                    ME_NAME VARCHAR(100), 
                    ME_DATE DATETIME)");
?>

Ajouter une ligne à la table TB_MEMBER

Si vous avez l'habitude d'utiliser PDO, le code vous semblera familier, préparer la requête d'insertion puis exécuter avec les paramètres.
<?php
//Ouvrir ou créer la base de données member
$db = new PDO('sqlite:member.sqlite');
//Activer les exceptions
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
//Requete SQL d'insertion
$sql = 'INSERT INTO TB_MEMBER (ME_NAME,ME_DATE) values(:ME_NAME,:ME_DATE)';
$stmt = $db->prepare($sql);
//Paramètre PDO
$P = array('ME_NAME' => 'BlackBear',
    'ME_DATE' => time());
//Executer la requete
$stmt->execute($P);
$stmt->closeCursor();
?>

Certains diront: t'as oublié ME_ID !
Nous avons définit le champs ME_ID en AUTOINCREMENT, la valeur de ID membre dans la table est ajoutée automatiquement. Le module SQLite est magique !

Sélectionner les lignes de la table avec SQLite

La sélection de donnée fonctionne également avec PDO, voyons comment sélectionner toutes les entrées de la table.

<?php
//Ouvrir ou créer la base de données member
$db = new PDO('sqlite:member.sqlite');
//Activer les exceptions
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = 'SELECT * FROM TB_MEMBER';
$stmt = $db->prepare($sql);
$stmt->execute();
//extaire les données
$member_list = $stmt->fetchAll(PDO::FETCH_ASSOC);
$stmt->closeCursor();
//Parcourir la liste des membres
foreach ($member_list as $row) {
    echo '
ID '
.$row['ME_ID'].' Nom '.$row['ME_NAME'].' inscrit depuis '.date("d/m/Y H:i:s", $row['ME_DATE']); } ?>

En ce qui concerne la date d'inscription, la date est stockée sous forme d'un timestamp Unix dans la base de donnée. La date est décodée avec la fonction date("d/m/Y H:i:s").

Ce tutoriel est un rapide aperçu des possibilités et du fonctionnement de libsqlite3. Le principale avantage réside dans l'absence de serveur comme pour MySQL. Avec la librairie SQLite, tout est stocké dans un fichier que l'on peut transférer d'un poste vers un autre support, idéal pour la sauvegarder des données.

Ajouter un commentaire

Les champs marqués d'un * sont obligatoires, les adresses emails se sont pas publiées.
avatar hungerGames

Publié par hungerGames

le 09/04/2015 à 08:00:40

Salut!
je suis un debutant en php,et lorsque j'ai execute le code
sur la creation de la base 'member',on m'a affiche cet message:
"Undefined class constant 'ATT_ERRMODE' in D:\etc\www\createTable.php on line 14"
j'avais cherche tous les issus,mais je ne trouve pas la solution.
alors j'ai besoin de votre aide

avatar Fobec

Publié par Fobec

le 09/04/2015 à 08:44:40

a priori il manque simplement le R dans le nom de la constante
PDO::ATTR_ERRMODE en remplacement de PDO::ATT_ERRMODE

avatar rsuinux

Publié par rsuinux

le 26/11/2015 à 09:50:34

Merci pour cet article.
Cela m'a debloque pour sqlite3 sur openwrt :)
Cordialement.

A lire aussi

Réseaux sociaux
Présentation de l'article
Catégorie
php5 - db
Mise a jour
07/10/2014
Visualisation
vu 4776 fois
Public
Internaute
Auteur de la publication
BlackBear
Membre junior
Auteur de 3 articles
|BIO_PSEUDO|
Commentaires récents

Publié par xnadyx dans php5

Bonjour,

Est ce qu'il y a un autre moyen d'acces aux donnees Microsoft SQL Server?
Je ne trouve pas de tutoriaux sur Internet.

Merci.

Publié par ZINEDDINE dans CMS

SaLUT Monsieur
tu peux avec ce deux mot pass ouvrir tous les tables paradox
1-jIGGAe
2-cupcdvum
respecter le majjuscul
bonne chance .

Publié par makanaki dans logiciel

je veux essayer ce logiciel pour tester les jeux de loto de chez nous

Publié par piranhas dans java

bonjour, je veux te signaler que la piece jointe est fausse car il n\'y pas de liaison entre le modele et la vue, toutes le information passe par le controlleur.

Publié par PizzaToy dans php5

Salut,
super Class mais elle a fait son temps. Il faut maintenant passer la version 1.1 de l'API Twitter search et son authentification !