Ricerca…


Interrogare un database

<?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);
}
?>

Vedi anche http://www.Scriptutorial.com/topic/184

Recupero di un solo risultato

Oltre a utilizzare le istruzioni LIMIT SQL, è anche possibile utilizzare la funzione querySingle per recuperare una singola riga o la prima colonna.

<?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);
?>

SQLite3 Guida rapida

Questo è un esempio completo di tutte le API SQLite comunemente usate. L'obiettivo è quello di farti funzionare velocemente. Puoi anche ottenere un file PHP eseguibile di questo tutorial.

Creazione / apertura di un database

Creiamo prima un nuovo database. Crealo solo se il file non esiste e aprilo per leggere / scrivere. L'estensione del file dipende da te, ma .sqlite è piuttosto comune e autoesplicativo.

$db = new SQLite3('analytics.sqlite', SQLITE3_OPEN_CREATE | SQLITE3_OPEN_READWRITE);

Creare una tabella

$db->query('CREATE TABLE IF NOT EXISTS "visits" (
    "id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
    "user_id" INTEGER,
    "url" VARCHAR,
    "time" DATETIME
)');

Inserimento di dati di esempio.

È consigliabile racchiudere le query correlate in una transazione (con le parole chiave BEGIN e COMMIT ), anche se non ti interessa l'atomicità. Se non si esegue questa operazione, SQLite esegue automaticamente il wrapping di ogni singola query in una transazione, il che rallenta tutto immensamente. Se sei nuovo in SQLite, potresti rimanere sorpreso dal fatto che gli INSERT siano così lenti .

$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');

Inserire dati potenzialmente non sicuri con una dichiarazione preparata. Puoi farlo con parametri denominati :

$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

Recuperando i dati

Andiamo a prendere le visite di oggi dell'utente n. 42. Utilizzeremo di nuovo una dichiarazione preparata, ma questa volta con i parametri numerati , che sono più concisi:

$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: se non ci sono più righe, fetchArray () restituisce false . Puoi approfittare di questo in un ciclo while .

Libera la memoria - questa operazione non viene eseguita automaticamente, mentre lo script è in esecuzione

$result->finalize();

abbreviazioni

Ecco una utile stenografia per il recupero di una singola riga come array associativo. Il secondo parametro significa che vogliamo tutte le colonne selezionate.

Attenzione, questa stenografia non supporta l'associazione dei parametri, ma puoi sfuggire alle stringhe. Metti sempre i valori nelle citazioni SINGLE! Le virgolette sono usate per i nomi di tabelle e colonne (simili ai backtick in 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";

Un'altra utile stenografia per il recupero di un solo valore.

$userCount = $db->querySingle('SELECT COUNT(DISTINCT "user_id") FROM "visits"');

echo "User count: $userCount\n";
echo "\n";

Pulire

Infine, chiudi il database. Questo viene fatto automaticamente al termine dello script, comunque.

$db->close();


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow