Volver al índiceSQLite en PHP


Qué es SQLite

SQLite es una biblioteca escrita en C que implementa un motor de base de datos SQL92 (algunas características de SQL92 no están implementadas). SQLite se distribuye bajo la licencia de dominio público. La página web de SQLite es http://www.sqlite.org.

En la versión 4 de PHP, SQLite se podía utilizar como base de datos instalando un módulo PECL. A partir de la versión 5 de PHP, SQLite está incluido en PHP, por lo que está disponible sin necesidad de realizar ninguna instalación adicional.

Los nombres de las funciones de php que permiten utilizar SQLite en PHP empiezan por sqlite_ y son similares a los que permiten acceder otras bases de datos utilizables desde PHP (mysql, postgresql, etc). El manual de PHP incluye un capítulo dedicado a SQLite.

Volver al principio


Versión de SQLite

Como SQLite y PHP son proyectos independientes, la versión incluida en PHP no tiene por qué ser la última versión disponible de SQLite. Hay dos funciones que permiten conocer la versión de SQLite instalada en PHP:

En PHPhome 2.3.4, que incluye PHP 5.0.0, la versión de SQLite incluida es la 2.8.14, publicada el 9 de junio de 2004, con codificación iso8859:

<?php
  print "<p>Versión PHP: ".php_version()."</p>";
  print "<p>Versión SQLite: ".sqlite_libversion()."</p>";
  print "<p>Codificación: ".sqlite_libencoding()."</p>";
?>
Versión PHP: 5.0.0
Versión SQLite: 2.8.14
Codificación: iso8859

Volver al principio


Utilización de SQLite

Creación/Acceso a la base de datos

En SQLite, una base de datos es normalmente un fichero, aunque también pueden abrirse bases de datos en memoria.

La función para abrir una base de datos es sqlite_open(). El argumento de sqlite_open() es la ruta del archivo en el servidor (o :memory: en el caso de crear la base de datos en memoria. Si la base de datos no existe, la función crea una base de datos nueva. La función devuelve un manejador (handle), que se utiliza en el resto de funciones que acceden a la base de datos.

En el ejemplo siguiente, la variable $caminodb almacena la ruta donde se encuentra la base de datos y la variable $db el manejador de la base de datos.

<?php
  $caminodb = $_SERVER['DOCUMENT_ROOT']."db\\prueba01.db";
  $db = sqlite_open($caminodb) or die("No puedo abrir la base de datos ");
?>

Volver al principio


Consultas a la base de datos

Una vez abierta la base de datos, se pueden realizar consultas SQL utilizando varias funciones. Cada función devuelve el resultado de la consulta de forma ligeramente distinta.

La función sqlite_array_query() devuelve la respuesta de la consulta en forma de matriz. No es conveniente utilizar esta función si el resultado de la consulta contiene muchos registros, ya que puede ocupar mucha memoria en el servidor.

Explicar las diferencias entre ellas.

Volver al principio


Consultas CREATE TABLE, DROP TABLE, INSERT INTO, UPDATE, DELETE FROM

En estos ejemplos, la variable $db es un manejador creado con sqlite_open().

Para crear una tabla, se utiliza la consulta CREATE TABLE. Para crear un campo índice hay que definirlo INTEGER PRIMARY KEY.

<?php
  sqlite_query($db, "CREATE TABLE personas(id INTEGER PRIMARY KEY, nombre, apellidos)");
?>

Para borrar una tabla, se utiliza la consulta DROP TABLE.

<?php
  sqlite_query($db, "DROP TABLE personas");
?>

Para añadir un registro a una tabla, se utiliza la consulta INSERT INTO.

<?php
  sqlite_query($db, "INSERT INTO personas values (NULL , 'pepito' , 'conejo')" );
?>

Al insertar una cadena de texto, algunos caracteres pueden dar problemas, por lo que conviene utilizar la función sqlite_escape_string(). Esta función parece dar problemas con las cadenas vacías, así que parece que sólo hay que aplicarla tras comprobar que la cadena no es vacía.

<?php
  $apellido = ($_REQUEST['apellido']=="") ? "" : sqlite_escape_string($_REQUEST['apellido']);
  sqlite_query($db, "INSERT INTO personas values (NULL, 'pepito' , '$apellido')" );
?>

Lógicamente, si se ha utilizado la función sqlite_escape_string() al introducir una cadena en la base de datos, es necesario deshacer los cambios al mostrar la cadena. Para ello se puede utilizar la función stripslashes():

<?php
  print "<p>Apellidos:".stripslashes($resultado['apellidos'])."</p>
?>

Para modificar un registro a una tabla, se utiliza la consulta UPDATE.

<?php
  sqlite_query($db, "UPDATE personas SET nombre='Juan', apellidos='López' WHERE id='4'");
?>

Para borrar un registro de una tabla, se utiliza la consulta DELETE FROM.

<?php
  sqlite_query($db, "DELETE FROM personas WHERE id='1'");
?>

Consulta SELECT

Para obtener registros que cumplan determinados criterios se utiliza la consulta SELECT.

<?php
  $resultado = sqlite_array_query($db, "SELECT * FROM personas ORDER BY apellidos DESC", SQLITE_ASSOC);
?>

La consulta SELECT permite efectuar búsquedas en cadenas utilizando el condicional LIKE o NOT LIKE y los comodines _ (cualquier carácter) o % (cualquier número de caracteres). La primera consulta del ejemplo siguiente devolvería todos los registros en los que el primer apellido es Pérez, mientras que la segunda consulta devolvería todos los registros en los que el primer o segundo apellido es Pérez.

<?php
  $resultado = sqlite_array_query($db, "SELECT * FROM personas WHERE apellidos LIKE 'Pérez%'", SQLITE_ASSOC);
?>
<?php
  $resultado = sqlite_array_query($db, "SELECT * FROM personas WHERE apellidos LIKE '%Pérez%'", SQLITE_ASSOC);
?>

Se pueden realizar consultas de unión:

<?php
  $resultado = sqlite_array_query($db, "SELECT * FROM personas, ciudades WHERE personas.nacido-localidad=ciudades.id", SQLITE_ASSOC);
?>

Si se utiliza la misma tabla dos veces se deben utilizar alias:

<?php
  $resultado = sqlite_array_query($db, "SELECT * FROM personas, ciudades AS nacido, ciudades AS fallecido WHERE personas.nacido-localidad=nacido.id AND personas.fallecido-localidad=fallecido.id", SQLITE_ASSOC);
?>

Volver al principio

Autor: Bartolomé Sintes Marco
Última modificación de esta página: 18 de febrero de 2005