PHP 5.6.0 released

sqlite_open

(PHP 5 < 5.4.0, PECL sqlite >= 1.0.0)

sqlite_openAbrir una base de datos SQLite y crear la base de datos si no existe

Descripción

resource sqlite_open ( string $filename [, int $mode = 0666 [, string &$error_message ]] )

Estilo orientado a objetos (constructor):

final public SQLiteDatabase::__construct ( string $filename [, int $mode = 0666 [, string &$error_message ]] )

Abre una base de datos SQLite o crea la base de datos si no existe.

Parámetros

filename

El nombre de fichero de la base de datos SQLite. Si el fichero no existe, SQLite intentará crearla. PHP debe tener permisos de escritura del fichero si los datos son insertados, el esquema de la base de datos es modificado o se crea la base de datos si ésta no existe.

mode

El modo del fichero. En un futuro se usará para abrir la base de datos en modo sólo lectura. Actualmente, este parámetro es ignorado por la biblioteca sqlite. El valor por defecto es el valor octal 0666 y es el valor recomendado.

error_message

Pasado por referencia y establecido para contener un mensaje de error descriptivo explicando el por qué no se pudo abrir la base de datos si ocurriera un error.

Valores devueltos

Devuelve un recurso (gestor de base de datos) en caso de éxito, FALSE en caso de error.

Ejemplos

Ejemplo #1 Ejemplo de sqlite_open()

<?php
if ($db sqlite_open('mysqlitedb'0666$sqliteerror)) { 
    
sqlite_query($db'CREATE TABLE foo (bar varchar(10))');
    
sqlite_query($db"INSERT INTO foo VALUES ('fnord')");
    
$result sqlite_query($db'select bar from foo');
    
var_dump(sqlite_fetch_array($result)); 
} else {
    die(
$sqliteerror);
}
?>

Notas

Sugerencia

En plataformas Unix, SQLite es sensible a scripts que usan la llamada al sistema fork(). Si se tienen tales scripts, se recomienda que se cierre el gestor antes de usar la llamada al sistema y luego reabrirlo en el hijo y/o padre. Para más información de esta cuestión, véase » The C language interface to the SQLite library en la sección titulada Multi-Threading And SQLite.

Sugerencia

No se recomienda trabajar con bases de datos SQLite montadas sobre particiones NFS. Ya que NFS es notoriamente malo cuando viene a cerrar se puede encontrar que no se puede abrir la base de datos, y que si se puede el comportamiento de cierre puede ser indefinido.

Nota: Desde la versión 2.8.2 de la biblioteca SQLite, se puede especificar :memory: como el parámetro filename para crear una base de datos que reside solamente en la memoria de la computadora. Ésto es útil principalmente para el procesamiento temporal, ya que la base de datos que está en memoria será destruida cuando el proceso finalice. También puede ser útil cuando se asocia con la sentencia ATTACH DATABASE de SQL para cargar otras bases de dtaos y mover y consultar datos entre ellas.

Nota: SQLite es modo seguro y compatible con open_basedir.

Ver también

  • sqlite_popen() - Abrir un gestor persistente a una base de datos SQLite y crearla si no existe
  • sqlite_close() - Cierra un base de datos SQLite abierta
  • sqlite_factory() - Abrir una base de datos SQLite y devolver un objeto SQLiteDatabase

add a note add a note

User Contributed Notes 3 notes

up
5
Anonymous
7 years ago
the above example dows not! work since sqlite_query() does not accept one argument, but only 2.

so correct is:

<?php
if ($db = sqlite_open('mysqlitedb', 0666, $sqliteerror)) {
 
sqlite_query($db,'CREATE TABLE foo (bar varchar(10))');
 
sqlite_query($db,"INSERT INTO foo VALUES ('fnord')");
 
$result = sqlite_query($db,'select bar from foo');
 
var_dump(sqlite_fetch_array($result));
} else {
  die (
$sqliteerror);
}
?>
up
0
Phillip Berndt
7 years ago
If you miss to set the permissions mentioned by ivoras Sqlite will drop an error message saying "Malformed database scheme", which is somehow misleading.

(I mentioned this as some [I did] might search php.net for this error message)
up
-3
koalay at gmail dot com
2 years ago
This function only support database of SQLite 2 or below. For SQLite 3, you must use PDO.
To Top