CSS, HTML und Javascript mit {stil}

PHP und SQLite3 für Webseiten

SQLite und PHP

SQLite ist eine Datenbank, die mit einer Datei und einem Treiber statt einem Datenbankprozess arbeitet. SQLite ist eine vollständige Implementierung von ANSI Standard-SQL.

Als schnelle, zuverlässige und relationale Datenbank ist SQLite bestens für Web-Anwendungen geeignet.

SQLite nimmt eine Datei und nutzt sie als Datenbank. SQLite 3.6 war in den meisten PHP-Installation ab PHP 5.3 schon vertreten, im PHP 7 SQLite 3.7.17 oder neuer.

PHP stellt zwei Schnittstellen für SQLite3 bereit:

Natives SQLite3

Das native PHP-SQLite3-Interface ist stark an SQLite3 in C ausgerichtet. Allerdings ist PHP SQLite3 nicht die vollständige Umsetzung von SQLite3 in C, unterstützt Exceptions nicht vollständig und die Fehlerbehandlung ist spartanisch.

PDO – PHP Data Objects

PDO ist eine normalisierte Schnittstelle zu Datenbanken auf verschiedenen Plattformen und stellt in den meisten Fällen das bevorzugte Interface zu SQLite3 dar.

Zugriff auf die SQLite3-Datenbank

Für SQLite-Datenbanken ist keine Konfiguration und kein Login erforderlich.

$db = new SQLite3(DB_FILENAME);

Erzeugt ein Datenbank-Handle $db.

SQLite3 CREATE TABLE

exec wird für INSERT, UPDATE und DELETE benutzt.

$db = new SQLite3(DB_FILENAME);
$db-> exec("CREATE TABLE IF NOT EXISTS tableSpieler(
   id INTEGER PRIMARY KEY AUTOINCREMENT, 
   dokoname TEXT NOT NULL DEFAULT '0',
   dokoinfo TEXT NOT NULL DEFAULT '0',
   dokosince INTEGER NOT NULL DEFAULT '0')");

SQLite3 INSERT

$db->exec("INSERT INTO $table (
   tracktable, 
   trackspieler, 
   trackdate) VALUES (
   $tracktable,
   $tspieler,
   '$datetime')");

Fügt einen Datensatz in die Tabelle $table ein. Wenn die eingefügten Werte Zahlen sind, werden keine Hochkommas benötigt.

Beim Einfügen von Strings hingegen braucht PHP/SQLite3 Hochkommas.

SQLite3 – Zuletzt eingefügter Record

$lstrack = $db->lastInsertRowid();

Bei Tabellen mit Primary Key gibt $db->lastInsertRowid() die id des zuletzt eingefügten Datensatz zurück.

SQLite3 SELECT und JOIN

Anfragen an die SQLite3-Datenbank, die Daten zurück geben, werden mit query durchgeführt. Die Ergebnisse werden innerhalb von while mit fetchArray ausgelesen.

$db = new SQLite3(DB_FILENAME);
$results = $db->query("SELECT s.spielid, t.trackdate, t.id
   FROM tableTracks AS t 
   JOIN tableSpieler AS s 
   WHERE t.trackspieler = s.id 
   ORDER BY t.id");
while ($row = $results->fetchArray()) {
   echo $r['trackdate'];
   echo $r['spielid'];
   …
}

Die SQLite3-Console

Console öffnen

sqlite3 database.db

zeigt

SQLite version 3.6.20
Enter ".help" for instructions
Enter SQL statements terminated with a ";"

Alle Tabellen einer SQLite3-Datenbank anzeigen lassen

select * from sqlite_master;

zeigt die create-Anweisungen für alle Tabellen der Datenbank

table|spieler|spieler|2|CREATE TABLE spieler(
     id INTEGER PRIMARY KEY AUTOINCREMENT, 
     firstname TEXT NOT NULL DEFAULT '',
     lastname TEXT NOT NULL DEFAULT '')
table|sqlite_sequence|sqlite_sequence|3|CREATE TABLE sqlite_sequence(name,seq)
table|track|track|4|CREATE TABLE "track"(
     id INTEGER PRIMARY KEY AUTOINCREMENT, 
     spieler INTEGER NOT NULL DEFAULT '0',
     points INTEGER INTEGER NOT NULL DEFAULT '0')

Alle Datensätze einer Tabelle anzeigen

select * from spieler;

Alle Datensätze einer Tabelle löschen

delete from track;

Einzelne Sätze löschen

delete from track where trackno < 2000;

SQLite3-Console beenden

.quit

SQLite3 direkt von der Kommandozeile mit dem Befehl in Hochkommas

sqlite3 test.db "select * from customer "

SQLite3-Befehl aus einer Textdatei ausführen

sqlite3 mytest.db < test-sqlite3.sql