SQLite - PHP

Instalación

Desde PHP 5.3.0, la extensión SQLite3 está habilitada de forma predeterminada. Se puede deshabilitar en tiempo de compilación con--without-sqlite3deshabilitar la extensión SQLite3.

Los usuarios de Windows deben habilitar php_sqlite3.dll para usar esta extensión. Desde PHP 5.3.0, este DLL se incluye en la distribución de Windows de PHP.

Para obtener instrucciones de instalación detalladas, le sugerimos consultar nuestro tutorial de PHP y su sitio web oficial.

Interfaz API de PHP

Los siguientes son programas PHP importantes que pueden satisfacer sus necesidades de usar la base de datos SQLite en sus programas PHP. Si necesita más detalles, consulte la documentación oficial de PHP.

N.ºAPI y descripción
1public void SQLite3::open ( filename, flags, encryption_key )

Abre una base de datos SQLite 3. Si la compilación incluye cifrado, intentará usar la clave.

Si el nombre de archivofilenamese asigna a':memory:', entonces SQLite3::open() creará una base de datos en memoria en RAM, que solo durará mientras la sesión esté activa.

Si el nombre de archivo filename es el nombre real de un archivo de dispositivo, entonces SQLite3::open() usará este valor de parámetro para intentar abrir el archivo de base de datos. Si no existe un archivo con ese nombre, se creará un nuevo archivo de base de datos con ese nombre.

Los flags opcionales se usan para determinar si se abre la base de datos SQLite. De forma predeterminada, se abre con SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE.

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

Esta rutina proporciona un método abreviado para ejecutar comandos SQL, proporcionados por el parámetro sql, que pueden constar de varios comandos SQL. Este programa se utiliza para ejecutar una consulta sin resultados en la base de datos dada.

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

Esta rutina ejecuta una consulta SQL; si la consulta devuelve un resultado, devuelve unSQLite3Resultobjeto.

4public int SQLite3::lastErrorCode ( void )

Esta rutina devuelve el código de resultado numérico de la última solicitud SQLite fallida.

5public string SQLite3::lastErrorMsg ( void )

Esta rutina devuelve la descripción textual en inglés de la última solicitud SQLite fallida.

6public int SQLite3::changes ( void )

Esta rutina devuelve el número de filas de la base de datos que fueron actualizadas, insertadas o eliminadas por la última declaración SQL.

7public bool SQLite3::close ( void )

Esta rutina cierra la conexión de base de datos abierta anteriormente con SQLite3::open().

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

Esta rutina devuelve una cadena que ha sido correctamente escapada en la declaración SQL por razones de seguridad.

Conectar a la base de datos

El siguiente código PHP muestra cómo conectarse a una base de datos existente. Si la base de datos no existe, se creará y finalmente se devolverá un objeto de base de datos.

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

Ahora, ejecutemos el programa anterior para crear nuestra base de datos en el directorio actualtest.db. Puede cambiar la ruta según sea necesario. Si la base de datos se crea correctamente, se mostrará el mensaje que se muestra a continuación:

Open database successfully

Crear tabla

El siguiente fragmento de código PHP se utiliza para crear una tabla en la base de datos creada anteriormente:

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

Cuando se ejecuta el programa anterior, crea la tabla COMPANY entest.dby muestra el mensaje que se muestra a continuación:

Opened database successfully
Table created successfully

Operación INSERT

El siguiente programa PHP muestra cómo crear registros en la tabla COMPANY creada anteriormente:

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

Cuando se ejecuta el programa anterior, crea los registros dados en la tabla COMPANY y mostrará las dos líneas siguientes:

Opened database successfully
Records created successfully

Operación SELECT

El siguiente programa PHP muestra cómo obtener y mostrar registros de la tabla COMPANY creada anteriormente:

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

Cuando se ejecuta el programa anterior, produce el siguiente resultado:

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

Operación UPDATE

El siguiente código PHP muestra cómo usar la declaración UPDATE para actualizar cualquier registro y luego obtener y mostrar los registros actualizados de la tabla 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();
?>

Cuando se ejecuta el programa anterior, produce el siguiente resultado:

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

Operación DELETE

El siguiente código PHP muestra cómo usar la declaración DELETE para eliminar cualquier registro y luego obtener y mostrar los registros restantes de la tabla 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();
?>

Cuando se ejecuta el programa anterior, produce el siguiente resultado:

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
Otras extensiones