SQLite - PHP

Dans ce chapitre, vous apprendrez à utiliser SQLite dans les programmes PHP.

Installation

L'extension SQLite3 est activée par défaut à partir de PHP 5.3.0. Il est possible de le désactiver en utilisant--without-sqlite3 au moment de la compilation.

Les utilisateurs Windows doivent activer php_sqlite3.dll pour utiliser cette extension. Cette DLL est incluse dans les distributions Windows de PHP à partir de PHP 5.3.0.

Pour des instructions d'installation détaillées, veuillez consulter notre tutoriel PHP et son site officiel.

API d'interface PHP

Voici des routines PHP importantes qui peuvent suffire à votre besoin pour travailler avec la base de données SQLite de votre programme PHP. Si vous recherchez une application plus sophistiquée, vous pouvez consulter la documentation officielle PHP.

N ° Sr. API et description
1

public void SQLite3::open ( filename, flags, encryption_key )

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

Si le nom de fichier est donné comme':memory:', SQLite3 :: open () créera une base de données en mémoire dans la RAM qui ne durera que pendant la durée de la session.

Si le nom de fichier est le nom de fichier de périphérique réel, SQLite3 :: open () tente d'ouvrir le fichier de base de données en utilisant sa valeur. Si aucun fichier de ce nom n'existe, un nouveau fichier de base de données de ce nom est créé.

Indicateurs facultatifs utilisés pour déterminer comment ouvrir la base de données SQLite. Par défaut, open utilise SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE.

2

public bool SQLite3::exec ( string $query )

Cette routine fournit un moyen rapide et facile d'exécuter des commandes SQL fournies par l'argument sql, qui peut être constitué de plusieurs commandes SQL. Cette routine est utilisée pour exécuter une requête sans résultat sur une base de données donnée.

3

public SQLite3Result SQLite3::query ( string $query )

Cette routine exécute une requête SQL, renvoyant un SQLite3Result objet si la requête renvoie des résultats.

4

public int SQLite3::lastErrorCode ( void )

Cette routine renvoie le code de résultat numérique de la dernière requête SQLite ayant échoué.

5

public string SQLite3::lastErrorMsg ( void )

Cette routine renvoie un texte en anglais décrivant la dernière requête SQLite ayant échoué.

6

public int SQLite3::changes ( void )

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

sept

public bool SQLite3::close ( void )

Cette routine ferme une connexion à la base de données précédemment ouverte par un appel à SQLite3 :: open ().

8

public string SQLite3::escapeString ( string $value )

Cette routine renvoie une chaîne qui a été correctement échappée pour une inclusion sûre dans une instruction SQL.

Se connecter à 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 finalement 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 test.dbdans le répertoire courant. Vous pouvez changer votre chemin selon vos besoins. Si la base de données est créée avec succès, elle affichera le message suivant -

Open database successfully

Créer une table

Le programme 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 créera la table COMPANY dans votre test.db et il affichera les messages suivants -

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 dans l'exemple 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éera les enregistrements donnés dans la table COMPANY et affichera 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 dans l'exemple 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
      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 extraire 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