SQLite - PHP

In questo capitolo imparerai come usare SQLite nei programmi PHP.

Installazione

L'estensione SQLite3 è abilitata per impostazione predefinita a partire da PHP 5.3.0. È possibile disabilitarlo utilizzando--without-sqlite3 in fase di compilazione.

Gli utenti Windows devono abilitare php_sqlite3.dll per utilizzare questa estensione. Questa DLL è inclusa nelle distribuzioni Windows di PHP a partire da PHP 5.3.0.

Per istruzioni dettagliate sull'installazione, controlla il nostro tutorial PHP e il suo sito web ufficiale.

API dell'interfaccia PHP

Di seguito sono riportate importanti routine PHP che possono essere sufficienti per lavorare con il database SQLite dal tuo programma PHP. Se stai cercando un'applicazione più sofisticata, puoi consultare la documentazione ufficiale di PHP.

Sr.No. API e descrizione
1

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

Apre il database SQLite 3. Se la build include la crittografia, tenterà di utilizzare la chiave.

Se il nome del file è dato come':memory:', SQLite3 :: open () creerà un database in memoria nella RAM che dura solo per la durata della sessione.

Se il nome del file è il nome del file del dispositivo effettivo, SQLite3 :: open () tenta di aprire il file del database utilizzando il suo valore. Se non esiste alcun file con quel nome, viene creato un nuovo file di database con quel nome.

Flag opzionali utilizzati per determinare come aprire il database SQLite. Per impostazione predefinita, open utilizza SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE.

2

public bool SQLite3::exec ( string $query )

Questa routine fornisce un modo semplice e veloce per eseguire i comandi SQL forniti dall'argomento sql, che può essere costituito da più di un comando SQL. Questa routine viene utilizzata per eseguire una query senza risultati su un determinato database.

3

public SQLite3Result SQLite3::query ( string $query )

Questa routine esegue una query SQL, restituendo un file SQLite3Result oggetto se la query restituisce risultati.

4

public int SQLite3::lastErrorCode ( void )

Questa routine restituisce il codice di risultato numerico della richiesta SQLite non riuscita più recente.

5

public string SQLite3::lastErrorMsg ( void )

Questa routine restituisce testo in inglese che descrive la richiesta SQLite non riuscita più recente.

6

public int SQLite3::changes ( void )

Questa routine restituisce il numero di righe del database che sono state aggiornate, inserite o eliminate dall'istruzione SQL più recente.

7

public bool SQLite3::close ( void )

Questa routine chiude una connessione al database precedentemente aperta da una chiamata a SQLite3 :: open ().

8

public string SQLite3::escapeString ( string $value )

Questa routine restituisce una stringa di cui è stato eseguito correttamente l'escape per l'inclusione sicura in un'istruzione SQL.

Connetti al database

Il seguente codice PHP mostra come connettersi a un database esistente. Se il database non esiste, verrà creato e infine verrà restituito un oggetto database.

<?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";
   }
?>

Ora, eseguiamo il programma sopra per creare il nostro database test.dbnella directory corrente. Puoi cambiare il tuo percorso secondo le tue esigenze. Se il database è stato creato correttamente, verrà visualizzato il seguente messaggio:

Open database successfully

Crea una tabella

Il seguente programma PHP verrà utilizzato per creare una tabella nel database precedentemente creato.

<?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();
?>

Quando il programma sopra viene eseguito, creerà la tabella AZIENDA nel tuo file test.db e mostrerà i seguenti messaggi -

Opened database successfully
Table created successfully

Operazione INSERT

Il seguente programma PHP mostra come creare record nella tabella AZIENDA creata nell'esempio precedente.

<?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();
?>

Quando il programma sopra viene eseguito, creerà i record dati nella tabella AZIENDA e visualizzerà le seguenti due righe.

Opened database successfully
Records created successfully

Operazione SELECT

Il seguente programma PHP mostra come recuperare e visualizzare i record dalla tabella COMPANY creata nell'esempio sopra -

<?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();
?>

Quando il programma di cui sopra viene eseguito, produrrà il seguente risultato.

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

Operazione UPDATE

Il seguente codice PHP mostra come utilizzare l'istruzione UPDATE per aggiornare qualsiasi record e quindi recuperare e visualizzare i record aggiornati dalla tabella 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();
?>

Quando il programma di cui sopra viene eseguito, produrrà il seguente risultato.

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

Operazione DELETE

Il seguente codice PHP mostra come utilizzare l'istruzione DELETE per eliminare qualsiasi record e quindi recuperare e visualizzare i record rimanenti dalla tabella 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();
?>

Quando il programma di cui sopra viene eseguito, produrrà il seguente risultato.

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