ferrytoweb.info


PHP/SQLite3-Datenbank


Um mit SQL zu arbeiten, braucht man natürlich eine (relationale) Datenbank. Es bietet sich an, die Datenbankunterstützung von PHP zu nutzen. Üblicherweise wird MySQL verwendet, und nach wie vor gern wird das mysql-Modul von PHP genutzt. Es funktioniert immer noch, wenn auch in früheren Versionen des Handbuchs als »veraltet« eingestuft und alternative MySQL-Anbindungen angeboten werden.
PHP bringt auch SQLite3 mit, und zwar als Datenbank-Klasse. Im Gegensatz zu MySQL muss SQLite3 nicht als Extra-Produkt installiert sein, PHP bringt alles mit; warum also nicht einmal ausprobieren?
Homepage von SQLite: https://www.sqlite.org
SQL-Syntax: https://www.sqlite.orglang.html
C++ Interface: https://www.sqlite.org/c3ref/funclist.html
Das C++ Interface beschreibt zwar die Funktionen unter C++, die Funktionen der SQLite3-Klasse unter PHP sind aber ähnlich, und so hat man eine zusätzliche Dokumentation.

Erste Datenbankversuche

Es genügt das Instanzieren eines Objekts der Klasse SQLite3, um eine »Datenbanksitzung« zu eröffnen. Man muss nur den Namen einer Datei angeben, die als Datenbank fungieren wird.
Das Script sqlite3versuche.php ist unser erstes Versuchprogramm, und als Dateiname der Datenbank wurde myfirstdb.db gewählt.
<?php
#
# sqlite3versuche.php
#

# Datenbank-Session eröffnen
$myfirstdb = new SQLite3('myfirstdb.db');

// hier kann man mit der Datenbank arbeiten

$myfirstdb->close();
# Datenbank-Session beendet

?>
Wird das Programm beim ersten mal ausgeführt, kann schon sein, dass ein Fehler ausgegeben wird, wenn nämlich die SQLite3-Erweiterung von PHP nicht freigeschaltet ist:
C:\xampp\htdocs\Versuche\PHP>php sqlite3versuche.php
PHP Fatal error:  Uncaught Error: Class 'SQLite3' not found ...
Die Freischaltung ist einfach in der Konfigurationsdatei php.ini zu machen. Falls man nicht weiß, wo sich die Datei befindet, kann man das mit dem Kommando php --ini erfragen.
In der einer Win*-Umgebung muss nur die Datei php_sqlite3.dll freigeschaltet werden:
# php.ini
...
;extension=php_sqlite3.dll # Semikolon am Anfang der Zeile entfernen!
...
Anwendungen wie Apache-Webserver, die PHP verwenden, sollten nach Änderung der Konfiguration neu gestartet werden.
Nun sollte alles funktionieren:
C:\xampp\htdocs\Versuche\PHP>php sqlite3versuche.php

C:\xampp\htdocs\Versuche\PHP>dir
...
12.03.2017  11:25                 0 myfirstdb.db
...
Die Ausführung unseres PHP-Scripts liefert keine Ausgabe, aber es entsteht die angegebene Datenbnak-Datei. Die ist natürlich leer, denn wir haben ja noch keine Daten eingebracht.
In Beispielen, die man im Internet findet, wird die abschließende Anweisung close() großzügig weggelassen. Das würde ich nicht empfehlen. Es ist immer gut, am Ende eines Programm »aufzuräumen« anstatt dem Betriebssystem das Beseitigen von Datenmüll zu überlassen.