Premiers pas en Sqlite
Par Félix Sportelli, vendredi 31 août 2007 à 13:58 :: General :: #140 :: rss
Cette semaine je devais faire une page php avec base de données. N'ayant jamais testé, sqlite (et encore moins en php5), je me suis dit que c'était l'occasion. Vu le peu de choses que devait faire cette base, Sqlite correspondait au besoin.
Je rappelle pour ceux qui ne le savent pas que sqlite est un module inclut dans php5 qui permet de gérer une base de données "complètes" sans installation supplémentaire et ce dans un simple fichier. On peut lire sur le net que Sqlite posséderait une plus grande rapidité d'éxécution que d'autres base de données relationnelles du même type. Mais inconvénient de la chose, même si Sqlite possède les grands avantages des grandes bases de données comme les triggers, les views, elle ne possède pas toutes leurs possibilités. Il est par exemple impossible de modifier la structure d'une table une fois créée, la fonction SQL ALTER n'existant pas en Sqlite.
Bon, il faut savoir aussi qu'il y a de grandes différences entre Sqlite2 et Sqlite3, et les bases du premier ne peuvent être lues avec le binaire du second, et de même les code PHP utilisant du Sqlite2 (comme sqlite_open etc.) ne marcheront pas sur du Sqlite3 ( Nous sortant l'erreur avec laquelle je me suis arraché les cheveux : "Error: file is encrypted or is not a database"). Le problème vient du fait que php5 doit utiliser maintenant PDO pour se connecter à la base.
N'ayant pas trouvé *facilement* comment faire du sqlite3 avec php5, voici les quelques lignes indispensables :
<?
// create a SQLite3 database file with PDO and return a database
try
{
$dbHandle = new PDO ('sqlite:customers.db');
}
catch (PDOException $exception)
{
die ($exception->getMessage ());
}
// Create query and execute it
$sqlinsert = "select * from toto ";
$result = $dbHandle->query ($sqlinsert);
foreach ($result->fetchAll ()as $row)
{
print_r($row);
}
?>
Dernier point: Sqlite créé automatiquement sur chacune de ses tables un champs rowid qui est un id auto incrémenté au fil des inserts, donc pas besoin de rajouter un champs id que vous incrémentez manuellement à chaque fois.
Commentaires
1. Le lundi 3 septembre 2007 à 14:40, par Gwen
Ajouter un commentaire