PHP
SQLite3
Buscar..
Consultar una base de datos
<?php
//Create a new SQLite3 object from a database file on the server.
$database = new SQLite3('mysqlitedb.db');
//Query the database with SQL
$results = $database->query('SELECT bar FROM foo');
//Iterate through all of the results, var_dumping them onto the page
while ($row = $results->fetchArray()) {
var_dump($row);
}
?>
Véase también http://www.riptutorial.com/topic/184
Recuperando un solo resultado
Además de usar sentencias de LIMIT SQL, también puede usar la función querySingle
para recuperar una sola fila, o la primera columna.
<?php
$database = new SQLite3('mysqlitedb.db');
//Without the optional second parameter set to true, this query would return just
//the first column of the first row of results and be of the same type as columnName
$database->querySingle('SELECT column1Name FROM table WHERE column2Name=1');
//With the optional entire_row parameter, this query would return an array of the
//entire first row of query results.
$database->querySingle('SELECT column1Name, column2Name FROM user WHERE column3Name=1', true);
?>
Tutorial de inicio rápido de SQLite3
Este es un ejemplo completo de todas las API relacionadas con SQLite comúnmente utilizadas. El objetivo es ponerlo en marcha realmente rápido. También puede obtener un archivo PHP ejecutable de este tutorial.
Creación / apertura de una base de datos
Vamos a crear una nueva base de datos primero. Créelo solo si el archivo no existe y ábralo para leer / escribir. La extensión del archivo depende de usted, pero .sqlite
es bastante común y se explica por sí mismo.
$db = new SQLite3('analytics.sqlite', SQLITE3_OPEN_CREATE | SQLITE3_OPEN_READWRITE);
Creando una mesa
$db->query('CREATE TABLE IF NOT EXISTS "visits" (
"id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
"user_id" INTEGER,
"url" VARCHAR,
"time" DATETIME
)');
Insertar datos de muestra.
Es recomendable envolver las consultas relacionadas en una transacción (con palabras clave BEGIN
y COMMIT
), incluso si no le importa la atomicidad. Si no hace esto, SQLite envuelve automáticamente cada consulta en una transacción, lo que ralentiza todo enormemente. Si eres nuevo en SQLite, puedes sorprenderte por qué los INSERT son tan lentos .
$db->exec('BEGIN');
$db->query('INSERT INTO "visits" ("user_id", "url", "time")
VALUES (42, "/test", "2017-01-14 10:11:23")');
$db->query('INSERT INTO "visits" ("user_id", "url", "time")
VALUES (42, "/test2", "2017-01-14 10:11:44")');
$db->exec('COMMIT');
Insertar datos potencialmente inseguros con una declaración preparada. Puedes hacer esto con parámetros nombrados :
$statement = $db->prepare('INSERT INTO "visits" ("user_id", "url", "time")
VALUES (:uid, :url, :time)');
$statement->bindValue(':uid', 1337);
$statement->bindValue(':url', '/test');
$statement->bindValue(':time', date('Y-m-d H:i:s'));
$statement->execute(); you can reuse the statement with different values
Recuperacion de datos
Vamos a buscar las visitas de hoy del usuario # 42. Volveremos a utilizar una declaración preparada, pero esta vez con parámetros numerados , que son más concisos:
$statement = $db->prepare('SELECT * FROM "visits" WHERE "user_id" = ? AND "time" >= ?');
$statement->bindValue(1, 42);
$statement->bindValue(2, '2017-01-14');
$result = $statement->execute();
echo "Get the 1st row as an associative array:\n";
print_r($result->fetchArray(SQLITE3_ASSOC));
echo "\n";
echo "Get the next row as a numeric array:\n";
print_r($result->fetchArray(SQLITE3_NUM));
echo "\n";
Nota: Si no hay más filas, fetchArray () devuelve
false
. Puedes aprovechar esto en un bucle dewhile
.
Libere la memoria: esto no se hace automáticamente, mientras se ejecuta su script
$result->finalize();
Shorthands
Aquí hay una taquigrafía útil para obtener una sola fila como una matriz asociativa. El segundo parámetro significa que queremos todas las columnas seleccionadas.
Cuidado, esta abreviatura no admite el enlace de parámetros, pero puedes escapar de las cadenas en su lugar. ¡Ponga siempre los valores en SOLAS citas! Las comillas dobles se usan para los nombres de tablas y columnas (similar a los backticks en MySQL).
$query = 'SELECT * FROM "visits" WHERE "url" = \'' .
SQLite3::escapeString('/test') .
'\' ORDER BY "id" DESC LIMIT 1';
$lastVisit = $db->querySingle($query, true);
echo "Last visit of '/test':\n";
print_r($lastVisit);
echo "\n";
Otra taquigrafía útil para recuperar un solo valor.
$userCount = $db->querySingle('SELECT COUNT(DISTINCT "user_id") FROM "visits"');
echo "User count: $userCount\n";
echo "\n";
Limpiar
Finalmente, cierre la base de datos. Sin embargo, esto se hace automáticamente cuando el script termina.
$db->close();