PHP
SQLite3
Suche…
Datenbank abfragen
<?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);
}
?>
Siehe auch http://www.riptutorial.com/topic/184
Nur ein Ergebnis abrufen
Neben den SQL-Anweisungen LIMIT können Sie auch die SQLite3-Funktion querySingle
, um eine einzelne Zeile oder die erste Spalte abzurufen.
<?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-Schnellstartanleitung
Dies ist ein vollständiges Beispiel für alle häufig verwendeten SQLite-APIs. Ziel ist es, Sie schnell zum Laufen zu bringen. Sie können auch eine ausführbare PHP-Datei dieses Tutorials erhalten.
Datenbank erstellen / öffnen
Erstellen wir zuerst eine neue Datenbank. Erstellen Sie es nur, wenn die Datei nicht vorhanden ist, und öffnen Sie sie zum Lesen / Schreiben. Die Erweiterung der Datei liegt bei Ihnen, aber .sqlite
ist ziemlich weit verbreitet und selbsterklärend.
$db = new SQLite3('analytics.sqlite', SQLITE3_OPEN_CREATE | SQLITE3_OPEN_READWRITE);
Eine Tabelle erstellen
$db->query('CREATE TABLE IF NOT EXISTS "visits" (
"id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
"user_id" INTEGER,
"url" VARCHAR,
"time" DATETIME
)');
Beispieldaten einfügen
Es ist ratsam, verwandte Abfragen in eine Transaktion BEGIN
(mit den Schlüsselwörtern BEGIN
und COMMIT
), auch wenn Sie sich nicht für Atomizität interessieren. Wenn Sie dies nicht tun, schließt SQLite automatisch jede einzelne Abfrage in einer Transaktion ein, wodurch alles erheblich verlangsamt wird. Wenn Sie SQLite noch nicht kennen, werden Sie vielleicht überrascht sein, warum die INSERTs so langsam sind .
$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');
Fügen Sie potenziell unsichere Daten mit einer vorbereiteten Anweisung ein. Sie können dies mit benannten Parametern tun:
$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
Daten abrufen
Lassen Sie uns die heutigen Besuche von Benutzer # 42 abrufen. Wir werden wieder eine vorbereitete Anweisung verwenden, diesmal jedoch mit nummerierten Parametern , die genauer sind:
$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";
Anmerkung: Wenn keine weiteren Zeilen vorhanden sind, gibt fetchArray () den Wert
false
. Sie können dies in einerwhile
Schleife nutzen.
Geben Sie den Speicher frei - dies geschieht nicht automatisch, während Ihr Skript ausgeführt wird
$result->finalize();
Abkürzungen
Hier ist eine nützliche Abkürzung für das Abrufen einer einzelnen Zeile als assoziatives Array. Der zweite Parameter bedeutet, dass wir alle ausgewählten Spalten wünschen.
Achtung, diese Abkürzung unterstützt keine Parameterbindung, Sie können stattdessen jedoch die Zeichenfolgen mit Escapezeichen versehen. Setzen Sie die Werte immer in SINGLE-Anführungszeichen! Anführungszeichen werden für Tabellen- und Spaltennamen verwendet (ähnlich wie Backticks 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";
Eine weitere nützliche Abkürzung, um nur einen Wert abzurufen.
$userCount = $db->querySingle('SELECT COUNT(DISTINCT "user_id") FROM "visits"');
echo "User count: $userCount\n";
echo "\n";
Aufräumen
Schließen Sie schließlich die Datenbank. Dies geschieht jedoch automatisch, wenn das Skript beendet ist.
$db->close();