Se trata de una extensi贸n que permite emplear el motor de base de datos embebible SQLite. SQLite es una biblioteca de C que implementa un motor de base de datos SQL embebible. Las aplicaciones que emplean la biblioteca de SQLite pueden emplear bases de datos sin necesidad de instalar un motor de bases datos externo.
SQLite no es una biblioteca cliente para acceder a un servidor de bases datos. El propio SQLite es el servidor de base datos. La biblioteca SQLite lee y escribe directamente sobre los archivos de la base de datos que se encuentran en el disco.
Nota: Para m谩s informaci贸n puede acceder al sitio web oficial de SQLite: http://sqlite.org/.
Lea el archivo INSTALL que viene con el paquete o utilice el instalador de PEAR con el siguiente comando "pear install sqlite". El propio SQLite ya est谩 incluido, as铆 que no es necesario instalar ning煤n programa adicional.
Los usuarios de Windows pueden descargar el archivo DLL de la extensi贸n SQLite en esta direcci贸n: (php_sqlite.dll).
En PHP 5, la extensi贸n SQLite y el propio motor de bases de datos est谩 incluido y compilado por defecto.
Instalaci贸n en Windows con cuentas de usuario sin privilegios: En los sistemas operativos Windows, las cuentas sin privilegios no tienen la variable de entorno TMP establecida por defecto. Por este motivo, SQLite crear谩 los archivos temporales en el directorio de Windows, lo que no es muy recomendable. La soluci贸n pasa por crear una variable de entorno llamada TMP para el servidor web o para la cuenta de usuario con la que se ejecuta el servidor web. Si el servidor empleado es Apache, puede establecerse esta variable mediante la directiva SetEnv del archivo de configuraci贸n httpd.conf. Por ejemplo:
Si no es posible establecer la variable a nivel de servidor, se puede realizar en el mismo script: La configuraci贸n debe hacer referencia a un directorio en el que el servidor web tenga permisos para crear archivos y por tanto para escribir y borrar los archivos creados. Si no tiene los permisos adecuados, se mostrar谩 el siguiente mensaje de error: malformed database schema - unable to open a temporary database file for storing temporary tables
Para poder utilizar estas funciones, se debe compilar PHP con soporte para SQLite o cargar la extensi贸n SQLite de forma din谩mica desde el archivo php.ini.
La interfaz de SQLite utiliza 2 recursos: el primero es de la conexi贸n con la base de datos y el segundo es el resultado.
Estas constantes est谩n definidas por esta extensi贸n y estar谩n disponibles solamente cuando la extensi贸n ha sido o bien compilada dentro de PHP o grabada din谩micamente en tiempo de ejecuci贸n.
Las funciones sqlite_fetch_array() y sqlite_current() emplean una constante para seleccionar los diferentes tipos de matrices del resultado. Los diferentes constantes definidas son las siguientes:
Constantes del tipo de resultado de SQLite
La matriz contiene el nombre de las columnas como 铆ndice de los valores.
La matriz contiene el nombre de las columnas y un 铆ndice num茅rico como 铆ndice de los valores.
La matriz contiene un 铆ndice num茅rico como 铆ndice de los valores. El 铆ndice empieza asignando el 0 al primer campo del resultado.
Algunas funciones devuelven c贸digos de estado. Se han definido los siguientes c贸digos:
Constantes del c贸digo de estado de SQLite
Resultado exitoso.
Error de SQL o base de datos desconocida.
Error l贸gico interno de SQLite.
Permiso de acceso denegado.
La funci贸n de callback solicit贸 una interrupci贸n.
El archivo de base de datos est谩 bloqueado.
Una tabla de la base de datos est谩 bloqueada.
Error en la reserva de memoria.
Se intent贸 escribir en una base de datos de solo lectura.
La operaci贸n finaliza贸 internamente.
Error de E/S en el disco.
La imagen de la base de datos en el disco est谩 corrupta.
Tabla o registro (internos) no encontrados.
No se pudo rea帽izar la inserci贸n porque la base de datos est谩 llena.
No se pudo abrir el archivo de la base de datos.
Error de bloqueo de base de datos.
La tabla (interna) de la base de datos est谩 vac铆a.
Se ha cambiado el esquema de la base de datos.
Demasiados datos para una fila de la tabla.
Interrupci贸n debida a la violaci贸n de una restricci贸n (constraint).
Confusi贸n en el tipo de los datos.
La librer铆a se emple贸 de forma incorrecta.
Se intent贸 utilizar unas caracter铆sticas de SO no soportadas en el sistema.
Error de autenticaci贸n.
El proceso interno dispone de otra fila.
El proceso interno ha finalizado la ejecuci贸n.
Representa una base de datos de SQLite abierta.
__construct - construye un nuevo objeto de tipo SQLiteDatabase
query - Ejecuta una consulta
queryExec - Ejecuta una consulta sin resultado
arrayQuery - Ejecuta una consulta y devuelve el resultado como una matriz
singleQuery - Ejecuta una consulta y devuelve o una matriz para una columna o el valor de la primera fila
unbufferedQuery - Ejecuta una consulta que devuelve el resultado de forma inmediata (unbuffered)
lastInsertRowid - Devuelve el identificador de la 煤ltima fila que se ha insertado
changes - Devuelve el n煤mero de filas que se han modificado tras la 煤ltima sentencia SQL
createAggregate - Registra una FDU (Funci贸n Definida por el Usuario) empleada para agregar resultados en las sentencias SQL
createFunction - Registra una FDU (Funci贸n Definida por el Usuario) para emplearla en las sentencias SQL
busyTimeout - Establece el valor o deshabilita la duraci贸n del temporizador de ocupado
lastErorr - Devuelve el 煤ltimo c贸digo de error del 煤ltimo error producido
fetchColumnTypes - Devuelve una matriz con los tipos de las columnas de una tabla determinada
Representa un resultado almacenado (buffered) de SQLite
fetch - Obtiene la siguiente fila del resultado y la devuelve como una matriz
fetchObject - Obtiene la siguiente fila del resultado y la devuelve como un objeto
fetchSingle - Obtiene la primera columna del resultado y la devuelve en una cadena
fetchAll - Obtiene todas las filas del resultado y las devuelve como una matriz de matrices
column - Obtiene una columna de la fila actual del resultado
numFields - Obtiene el n麓mero de campos del resultado
fieldName - Obtiene el nombre de un campo del resultado
current - Obtiene la fila actual del resultado y la devuelve como una matriz
key - Obtiene el 铆ndice de la fila actual
next - Se desplaza hasta el siguiente n煤mero de fila
valid - Indica si hay disponibles m谩s filas
rewind - Se desplaza hasta el primer n煤mero de fila del resultado
prev - Se desplaza hasta el anterior n煤mero de fila
hasPrev - Indica si hay disponible alguna fila anterior
numRows - Obtiene el n麓mero de filas en el resultado
seek - Se desplaza hasta un determinado n煤mero de fila
Representa un resultado no almacenado (unbuffered) de SQLite. Los resultados no almacenados son secuenciales y por tanto solamente se puede avanzar en ellos (no retroceder).
fetch - Obtiene la siguiente fila del resultado y la devuelve como una matriz
fetchObject - Obtiene la siguiente fila del resultado y la devuelve como un objeto
fetchSingle - Obtiene la primera columna del resultado y la devuelve en una cadena
fetchAll - Obtiene todas las filas del resultado y las devuelve como una matriz de matrices
column - Obtiene una columna de la fila actual del resultado
numFields - Obtiene el n麓mero de campos del resultado
fieldName - Obtiene el nombre de un campo del resultado
current - Obtiene la fila actual del resultado y la devuelve como una matriz
next - Se desplaza hasta el siguiente n煤mero de fila
valid - Indica si hay disponibles m谩s filas
El comportamiento de estas funciones est谩 afectado por los valores definidos en php.ini.
Tabla 1. Configure Options de SQLite
| Name | Default | Changeable | Registro de cambios |
|---|---|---|---|
| sqlite.assoc_case | "0" | PHP_INI_ALL | Disponible desde PHP 5.0.0. |
A continuaci贸n se presenta una corta explicaci贸n de las directivas de configuraci贸n.
Uso de 铆ndices hash sin distinguir may煤sculas y min煤sculas (0), solo may煤sculas (1) o solo min煤sculas(2).
Esta opci贸n se emplea cuando se requiere compatibilidad con otros sistemas de bases de datos, donde los nombres de las columnas siempre se devuelven o en may煤sculas o en min煤sculas, independientemente de la forma en la que se almacenan los nombres de los campos en el esquema de la base de datos.
La librer铆a SQLite devuelve el nombre de las columnas tal y como aparecen en el esquema de base de datos. Si el valor de sqlite.assoc_case es 0, se mantendr谩n los nombres originales. Si se pone a 1 o a 2, PHP convertir谩 los nombres originales a may煤sculas o en min煤sculas respectivamente.
El uso de esta opci贸n introduce una peque帽a penalizaci贸n en el rendimiento, pero es significativamente m谩s r谩pida que hacerlo manualmente en el script de PHP.