Par défaut la version embarquée de SQLite que j'ai avec php est une 2.X.Y. Il est possible de recourir à sqlite3. La version 3 de SQLite offre plus de fonctionnalités que la version 2. Pour celà il faut l'installer comme indiqué dans ce billet
Le site du projet php-sqlite3 est http://php-sqlite3.sourceforge.net/
Installation
On procède donc ainsi
wget http://fastbull.dl.sourceforge.net/sourceforge/php-sqlite3/sqlite3-0.5.tgz -O - | tar xzf -
cd sqlite3-0.5/
phpize
./configure --with-sqlite3
make
make install
Puis dans php.ini
, il faut ajouter la ligne
extension=sqlite3.so
On redémarre ensuite apache pour prendre en compte la nouvelle extension
En pointant dans un fichier vers la fonctionnalité phpinfo(), on devrait avoir
SQLite3 support | enabled |
sqlite3 library version | 3.4.2 |
Création d'une table
On va crée la base test.sqlite3 contenant la table semaine
root@olivia:/var/www/test# sqlite3 test.sqlite3
SQLite version 3.4.2
Enter ".help" for instructions
sqlite> CREATE TABLE semaine(idjour smallint primary key,jour_ref text);
sqlite> INSERT INTO semaine VALUES (1,'Lundi');
sqlite> INSERT INTO semaine VALUES (2,'mardi');
sqlite> INSERT INTO semaine VALUES (3,'mercredi');
sqlite> INSERT INTO semaine VALUES (4,'jeudi');
sqlite> INSERT INTO semaine VALUES (5,'vendredi');
sqlite> INSERT INTO semaine VALUES (6,'samedi');
sqlite> INSERT INTO semaine VALUES (7,'dimanche');
sqlite> .quit
Maintenant on énumére le contenu de la semaine
root@olivia:/var/www/test# sqlite3 test.sqlite3
SQLite version 3.4.2
Enter ".help" for instructions
sqlite> .tables
semaine
sqlite> SELECT * FROM semaine;
1|Lundi
2|mardi
3|mercredi
4|jeudi
5|vendredi
6|samedi
7|dimanche
sqlite> .exit
Exemple de script
Voici un exemple asez simple d'utilisation
root@olivia:/var/www/test# cat sqlite3-test.php
<?php
$db = sqlite3_open("test.sqlite3");
if (!$db) die ("Impossible d'acceder a la base");
/*
* Requete pour la lecture de la table
*/
$query = sqlite3_query($db, "SELECT * FROM semaine ORDER BY 1 ASC");
if (!$query) die (sqlite3_error($db));
/*
* utilisation de sqlite3_fetch_array() qui renvoit un table
* associatif
*
*/
while ( ($row = sqlite3_fetch_array($query)))
{
printf("%d\t%s\n", $row['idjour'], $row['jour_ref']);
}
/*
* On ferme tout !
*/
sqlite3_query_close($query);
sqlite3_close ($db);
?>
A l'exécution du script on aura alors
root@olivia:/var/www/test# /usr/lib/cgi-bin/php -q sqlite3-test.php
1 Lundi
2 mardi
3 mercredi
4 jeudi
5 vendredi
6 samedi
7 dimanche