SQLite - PHP

Installation

Depuis PHP 5.3.0, l'extension SQLite3 est activée par défaut. Vous pouvez utiliser--without-sqlite3pour désactiver l'extension SQLite3.

Les utilisateurs de Windows doivent activer php_sqlite3.dll pour utiliser cette extension. Depuis PHP 5.3.0, cette DLL est incluse dans la distribution Windows de PHP.

Pour des instructions d'installation détaillées, il est recommandé de consulter notre tutoriel PHP et son site officiel.

API de l'interface PHP

Les programmes PHP suivants sont importants et peuvent répondre à vos besoins d'utilisation des bases de données SQLite dans les programmes PHP. Si vous avez besoin de plus de détails, veuillez consulter la documentation officielle de PHP.

Non.API et description
1public void SQLite3::open ( filename, flags, encryption_key )

Ouvre une base de données SQLite 3. Si la version compilée inclut le chiffrement, elle tentera d'utiliser la clé.

Si le nom de fichierfilenameest défini sur':memory:', alors SQLite3::open() créera une base de données en mémoire dans la RAM, qui ne dure que le temps de la session.

Si le nom de fichier filename est un nom de fichier de périphérique réel, alors SQLite3::open() utilisera la valeur de ce paramètre pour tenter d'ouvrir le fichier de base de données. Si un fichier portant ce nom n'existe pas, un nouveau fichier de base de données portant ce nom sera créé.

Les indicateurs optionnels sont utilisés pour déterminer s'il faut ouvrir la base de données SQLite. Par défaut, elle s'ouvre lorsque SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE est utilisé.

2public bool SQLite3::exec ( string $query )

Cette routine fournit un raccourci pour exécuter des commandes SQL, qui sont fournies par le paramètre sql et peuvent consister en plusieurs commandes SQL. Ce programme est utilisé pour exécuter une requête sans résultat sur une base de données donnée.

3public SQLite3Result SQLite3::query ( string $query )

This routine executes an SQL query and returns anSQLite3Result.

4public int SQLite3::lastErrorCode ( void )

Cette routine renvoie le code de résultat numérique de la requête SQLite la plus récente ayant échoué.

5public string SQLite3::lastErrorMsg ( void )

Cette routine renvoie la description textuelle en anglais de la requête SQLite la plus récente ayant échoué.

6public int SQLite3::changes ( void )

Cette routine renvoie le nombre de lignes de base de données mises à jour, insérées ou supprimées par l'instruction SQL la plus récente.

7public bool SQLite3::close ( void )

Cette routine ferme la connexion à la base de données précédemment ouverte en appelant SQLite3::open().

8public string SQLite3::escapeString ( string $value )

Cette routine renvoie une chaîne correctement échappée pour être utilisée dans une instruction SQL pour des raisons de sécurité.

Connexion à la base de données

Le code PHP suivant montre comment se connecter à une base de données existante. Si la base de données n'existe pas, elle sera créée, et enfin un objet de base de données sera renvoyé.

<?php
   class MyDB extends SQLite3
   {
      function __construct()
      {
         $this->open('test.db');
      }
   }
   $db = new MyDB();
   if(!$db){
      echo $db->lastErrorMsg();
   } else {
      echo "Opened database successfully\n";
   }
?>

Maintenant, exécutons le programme ci-dessus pour créer notre base de données dans le répertoire couranttest.db. Vous pouvez modifier le chemin selon vos besoins. Si la base de données est créée avec succès, le message présenté ci-dessous sera affiché :

Open database successfully

Créer une table

L'extrait de code PHP suivant sera utilisé pour créer une table dans la base de données précédemment créée :

<?php
   class MyDB extends SQLite3
   {
      function __construct()
      {
         $this->open('test.db');
      }
   }
   $db = new MyDB();
   if(!$db){
      echo $db->lastErrorMsg();
   } else {
      echo "Opened database successfully\n";
   }

   $sql =<<<EOF
      CREATE TABLE COMPANY
      (ID INT PRIMARY KEY     NOT NULL,
      NAME           TEXT    NOT NULL,
      AGE            INT     NOT NULL,
      ADDRESS        CHAR(50),
      SALARY         REAL);
EOF;

   $ret = $db->exec($sql);
   if(!$ret){
      echo $db->lastErrorMsg();
   } else {
      echo "Table created successfully\n";
   }
   $db->close();
?>

Lorsque le programme ci-dessus est exécuté, il vatest.dbcréer la table COMPANY dedans, et afficher le message suivant :

Opened database successfully
Table created successfully

Opération INSERT

Le programme PHP suivant montre comment créer des enregistrements dans la table COMPANY créée ci-dessus :

<?php
   class MyDB extends SQLite3
   {
      function __construct()
      {
         $this->open('test.db');
      }
   }
   $db = new MyDB();
   if(!$db){
      echo $db->lastErrorMsg();
   } else {
      echo "Opened database successfully\n";
   }

   $sql =<<<EOF
      INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
      VALUES (1, 'Paul', 32, 'California', 20000.00 );

      INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
      VALUES (2, 'Allen', 25, 'Texas', 15000.00 );

      INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
      VALUES (3, 'Teddy', 23, 'Norway', 20000.00 );

      INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
      VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 );
EOF;

   $ret = $db->exec($sql);
   if(!$ret){
      echo $db->lastErrorMsg();
   } else {
      echo "Records created successfully\n";
   }
   $db->close();
?>

Lorsque le programme ci-dessus est exécuté, il crée les enregistrements donnés dans la table COMPANY et affiche les deux lignes suivantes :

Opened database successfully
Records created successfully

Opération SELECT

Le programme PHP suivant montre comment récupérer et afficher les enregistrements de la table COMPANY créée précédemment :

<?php
   class MyDB extends SQLite3
   {
      function __construct()
      {
         $this->open('test.db');
      }
   }
   $db = new MyDB();
   if(!$db){
      echo $db->lastErrorMsg();
   } else {
      echo "Opened database successfully\n";
   }

   $sql =<<<EOF
      SELECT * from COMPANY;
EOF;

   $ret = $db->query($sql);
   while($row = $ret->fetchArray(SQLITE3_ASSOC) ){
      echo "ID = ". $row['ID'] . "\n";
      echo "NAME = ". $row['NAME'] ."\n";
      echo "ADDRESS = ". $row['ADDRESS'] ."\n";
      echo "SALARY =  ".$row['SALARY'] ."\n\n";
   }
   echo "Operation done successfully\n";
   $db->close();
?>

Lorsque le programme ci-dessus est exécuté, il produira le résultat suivant :

Opened database successfully
ID = 1
NAME = Paul
ADDRESS = California
SALARY =  20000

ID = 2
NAME = Allen
ADDRESS = Texas
SALARY =  15000

ID = 3
NAME = Teddy
ADDRESS = Norway
SALARY =  20000

ID = 4
NAME = Mark
ADDRESS = Rich-Mond
SALARY =  65000

Operation done successfully

Opération UPDATE

Le code PHP suivant montre comment utiliser l'instruction UPDATE pour mettre à jour n'importe quel enregistrement, puis récupérer et afficher les enregistrements mis à jour de la table COMPANY :

<?php
   class MyDB extends SQLite3
   {
      function __construct()
      {
         $this->open('test.db');
      }
   }
   $db = new MyDB();
   if(!$db){
      echo $db->lastErrorMsg();
   } else {
      echo "Opened database successfully\n";
   }
   $sql =<<<EOF
      UPDATE COMPANY set SALARY = 25000.00 where ID=1;
EOF;
   $ret = $db->exec($sql);
   if(!$ret){
      echo $db->lastErrorMsg();
   } else {
      echo $db->changes(), " Record updated successfully\n";
   }

   $sql =<<<EOF
      SELECT * from COMPANY;
EOF;
   $ret = $db->query($sql);
   while($row = $ret->fetchArray(SQLITE3_ASSOC) ){
      echo "ID = ". $row['ID'] . "\n";
      echo "NAME = ". $row['NAME'] ."\n";
      echo "ADDRESS = ". $row['ADDRESS'] ."\n";
      echo "SALARY =  ".$row['SALARY'] ."\n\n";
   }
   echo "Operation done successfully\n";
   $db->close();
?>

Lorsque le programme ci-dessus est exécuté, il produira le résultat suivant :

Opened database successfully
1 Record updated successfully
ID = 1
NAME = Paul
ADDRESS = California
SALARY =  25000

ID = 2
NAME = Allen
ADDRESS = Texas
SALARY =  15000

ID = 3
NAME = Teddy
ADDRESS = Norway
SALARY =  20000

ID = 4
NAME = Mark
ADDRESS = Rich-Mond
SALARY =  65000

Operation done successfully

Opération DELETE

Le code PHP suivant montre comment utiliser l'instruction DELETE pour supprimer n'importe quel enregistrement, puis récupérer et afficher les enregistrements restants de la table COMPANY :

<?php
   class MyDB extends SQLite3
   {
      function __construct()
      {
         $this->open('test.db');
      }
   }
   $db = new MyDB();
   if(!$db){
      echo $db->lastErrorMsg();
   } else {
      echo "Opened database successfully\n";
   }
   $sql =<<<EOF
      DELETE from COMPANY where ID=2;
EOF;
   $ret = $db->exec($sql);
   if(!$ret){
     echo $db->lastErrorMsg();
   } else {
      echo $db->changes(), " Record deleted successfully\n";
   }

   $sql =<<<EOF
      SELECT * from COMPANY;
EOF;
   $ret = $db->query($sql);
   while($row = $ret->fetchArray(SQLITE3_ASSOC) ){
      echo "ID = ". $row['ID'] . "\n";
      echo "NAME = ". $row['NAME'] ."\n";
      echo "ADDRESS = ". $row['ADDRESS'] ."\n";
      echo "SALARY =  ".$row['SALARY'] ."\n\n";
   }
   echo "Operation done successfully\n";
   $db->close();
?>

Lorsque le programme ci-dessus est exécuté, il produira le résultat suivant :

Opened database successfully
1 Record deleted successfully
ID = 1
NAME = Paul
ADDRESS = California
SALARY =  25000

ID = 3
NAME = Teddy
ADDRESS = Norway
SALARY =  20000

ID = 4
NAME = Mark
ADDRESS = Rich-Mond
SALARY =  65000

Operation done successfully
Autres extensions