SQLite - PHP
En este capítulo, aprenderá a usar SQLite en programas PHP.
Instalación
La extensión SQLite3 está habilitada de forma predeterminada a partir de PHP 5.3.0. Es posible deshabilitarlo usando--without-sqlite3 en tiempo de compilación.
Los usuarios de Windows deben habilitar php_sqlite3.dll para poder usar esta extensión. Esta DLL se incluye con las distribuciones de PHP de Windows a partir de PHP 5.3.0.
Para obtener instrucciones de instalación detalladas, consulte nuestro tutorial de PHP y su sitio web oficial.
API de interfaz PHP
A continuación se presentan importantes rutinas de PHP que pueden ser suficientes para trabajar con la base de datos SQLite desde su programa PHP. Si está buscando una aplicación más sofisticada, puede consultar la documentación oficial de PHP.
No Señor. | API y descripción |
---|---|
1 | public void SQLite3::open ( filename, flags, encryption_key ) Abre la base de datos SQLite 3. Si la compilación incluye cifrado, intentará utilizar la clave. Si el nombre del archivo se da como':memory:', SQLite3 :: open () creará una base de datos en memoria en RAM que durará solo el tiempo que dure la sesión. Si el nombre del archivo es el nombre del archivo del dispositivo real, SQLite3 :: open () intenta abrir el archivo de la base de datos utilizando su valor. Si no existe ningún archivo con ese nombre, se crea un nuevo archivo de base de datos con ese nombre. Indicadores opcionales que se utilizan para determinar cómo abrir la base de datos SQLite. Por defecto, open usa SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE. |
2 | public bool SQLite3::exec ( string $query ) Esta rutina proporciona una forma rápida y sencilla de ejecutar comandos SQL proporcionados por el argumento sql, que puede constar de más de un comando SQL. Esta rutina se utiliza para ejecutar una consulta sin resultados en una base de datos determinada. |
3 | public SQLite3Result SQLite3::query ( string $query ) Esta rutina ejecuta una consulta SQL, devolviendo un SQLite3Result objeto si la consulta devuelve resultados. |
4 | public int SQLite3::lastErrorCode ( void ) Esta rutina devuelve el código de resultado numérico de la solicitud SQLite fallida más reciente. |
5 | public string SQLite3::lastErrorMsg ( void ) Esta rutina devuelve texto en inglés que describe la solicitud SQLite fallida más reciente. |
6 | public int SQLite3::changes ( void ) Esta rutina devuelve el número de filas de la base de datos que se actualizaron, insertaron o eliminaron mediante la declaración SQL más reciente. |
7 | public bool SQLite3::close ( void ) Esta rutina cierra una conexión de base de datos previamente abierta por una llamada a SQLite3 :: open (). |
8 | public string SQLite3::escapeString ( string $value ) Esta rutina devuelve una cadena que se ha escapado correctamente para su inclusión segura en una declaración SQL. |
Conectarse 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. test.dben el directorio actual. Puede cambiar su ruta según sus necesidades. Si la base de datos se ha creado correctamente, mostrará el siguiente mensaje:
Open database successfully
Crear una tabla
El siguiente programa PHP se utilizará 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, creará la tabla EMPRESA en su test.db y mostrará los siguientes mensajes:
Opened database successfully
Table created successfully
INSERTAR Operación
El siguiente programa PHP muestra cómo crear registros en la tabla EMPRESA creada en el ejemplo anterior.
<?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, creará los registros dados en la tabla EMPRESA y mostrará las siguientes dos líneas.
Opened database successfully
Records created successfully
SELECCIONAR Operación
El siguiente programa PHP muestra cómo buscar y mostrar registros de la tabla EMPRESA creada en el ejemplo anterior:
<?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, producirá 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 ACTUALIZAR
El siguiente código PHP muestra cómo usar la instrucción UPDATE para actualizar cualquier registro y luego buscar y mostrar los registros actualizados de la tabla EMPRESA.
<?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, producirá 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 instrucción DELETE para eliminar cualquier registro y luego buscar y mostrar los registros restantes de la tabla EMPRESA.
<?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, producirá 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