Il y a plusieurs années, je développais un site web PHP que je devais installer chez un hébergeur en Ontario. Je n'avais donc pas le contrôle sur ce qui était installé sur le serveur et chaque service supplémentaire ajouté au forfait d'hébergement requérait un frais d'installation et une récurrence mensuelle pour le client (qui avait un budget assez limité). Le projet nécessitait des besoins modestes au niveau de la base de données et j'avais dû faire le choix le plus économique.
À titre d'exemple, l'option la moins chère qu'offrait l'hébergeur était pour une base de données Access qui coûtait, si je me souviens bien, 25$ de frais d'installation (!) et un frais mensuel de 5 à 10$ (c'était à une époque où on devait louer l'espace d'hébergement au Mo plutôt qu'au Go...). Tout ce que j'avais à faire était de déposer le fichier Access (.mda) par FTP sur un serveur Windows et y accéder avec PHP avec ODBC. MS Access avait été suffisant mais disons que ce n'était pas mon premier choix.
SQLite
Aujourd'hui, si j'avais une décision semblable à prendre, j'opterais probablement pour SQLite. D'abord parce qu'il est installé par défaut avec PHP, ensuite parce qu'il ne nécessite aucune configuration particulière et que la base de données ne roule pas sous la forme client/serveur. Au contraire, elle est directement intégrée au site et est accessible par une librairie de fonctions. Autrement dit, la base de données est conservée dans un fichier unique, hébergé à même le serveur web, un peu comme si je lisais un fichier avec fopen().
Quelques lignes de code
En PHP, on aura accès à SQLite dès que l'extension du même nom est installée (vérifier par phpinfo). Une seule ligne de code permet d'ouvrir la base de données en indiquant le chemin et le nom du fichier. Si le fichier n'existe pas, il sera automatiquement créé. On peut spécifier l'emplacement avec un chemin complet dans le filesystem, sinon il doit être relatif au fichier PHP qui exécute la requête.
// ouverture d'une base de données existanteQuelques conseils
$db = new SQLiteDatabase('database/config.sqlite');
// une requête simple
$rs = $db->query("SELECT * FROM tablename");
// récupération des résultats
while ($row = $rs->fetch(SQLITE_ASSOC)){
echo $row['colname'] . '
';
}
// mise à jour d'un enregistrement
$db->queryExec("UPDATE tablename SET colname = 'value' WHERE id = 1");
- SQLite 3 ne possède pas encore d'accès protégé par un nom d'usager et un mot de passe
- On peut accéder à une base de données SQLite avec PDO
- Il faut faire attention, les fichiers des versions 2 et 3 ne sont pas compatibles entre eux
- N'oubliez pas de protéger l'accès au fichier SQLite, par exemple à partir du fichier .htaccess
- L'extension pour Firefox SQLite Manager permet d'ouvrir et de gérer les bases de données
- Quelques grands noms qui utilisent SQLite : Adobe, Apple, Firefox, Google...