PHP Schnellstart – PHP und Datenbanken – Teil 1 – Einführung
Größere Projekte beinhalten meist eine Menge Daten, die von dem PHP-Skript verarbeitet werden. Diese Daten speicherst Du auf einem Datenträger und lädst daraus stets nur den gerade benötigten Ausschnitt in den Arbeitsspeicher des Computers. Grob vereinfacht gesprochen, bestehen für das Speichern der Daten zwei Wege
- die Ablage als lokale Datei sowie
- die Ablage in einer Datenbank.
1. Lokale Datei
Für den 1. Weg gilt, dass die Datei lokal vorliegt. Dazu ist die Datei entweder direkt auf dem Rechner gespeichert, wo die Verarbeitung stattfindet, oder ist über ein Netzwerkdateisystem wie NFS oder Samba/CIFS von einem anderen Rechner aus erreichbar. Als Format der Datei ist es üblich, eine zeilenweise Speicherung in einer Textdatei oder durch Komma voneinander getrennte Werte (CSV) zu benutzen. Beide Varianten kommen üblicherweise bei kleineren Datenmengen oder auch bei Log-Daten zum Einsatz.
2. Datenbanken - Yaaay
Wird die Datenmenge hingegen größer, ist eine effektivere Verwaltung besser.
Das ist der 2. Weg -- die Ablage in einer Datenbank. Datenbanken fassen Tabellen zusammen und werden von einem Datenbankmanagementsystem (DBMS) verwaltet.
Dazu gibt es eine Vielzahl von Implementierungen, die hier der Vollständigkeit halber aufgeführt werden, bspw. relationale DBMS wie PostgreSQL, MySQL/MariaDB, SQLite, DB2 oder Oracle Database, aber auch NoSQL-DBMS wie Couchbase und XML-basierte DBMS wie BaseX und Sedna. Du kannst durchatmen, denn du musst diese nicht auswendig lernen 😉
Welches DBMS die beste Wahl ist, ist vom konkreten Anwendungsfall abhängig.
PHP und Module - SQLite mit PHP kombinieren
In dieser Lektion lernst Du, wie du das DBMS SQLite mit PHP kombinierst.
Damit sich PHP und SQLite miteinander verstehen, musst Du sicherstellen, dass Du auch ein entsprechendes PHP-Modul installiert hast. Unter Debian GNU/Linux heißt das Softwarepaket php7.3-sqlite3 (für PHP 7.3) und hat einen ähnlichen Namen unter anderen Linux-Distributionen wie RedHat, Fedora und Ubuntu.
(Hinweis: Falls du SQLite auf deinem Server installieren möchtest, gibt es hier den passenden Befehl. Du kannst die nächste Zeile allerdings auch überspringen.)
Die Installation unter Debian GNU/Linux gelingt bspw. mit apt-get wie folgt:
# apt-get install php7.3-sqlite3
Et voila -- jetzt kann es losgehen.
Beispieldatenbank
Hier verwenden wir als Basis eine vergleichsweise einfache Datenbank, die lediglich eine Tabelle namens "benutzer" besitzt.
Die Tabelle hat zwei Textfelder pro Eintrag oder Datensatz -- "name" für den Benutzernamen und "email" für die Emailadresse des Benutzers.
Die Tabelle ist in einer lokalen Datei namens "contact.sqlite" gespeichert. Die nachfolgende Abbildung zeigt, wie die Tabelle aussieht, wenn Du sie im graphischen Werkzeug sqlitebrowser unter Linux anschaust. sqlitebrowser steht auch für Windows und Mac OS X bereit. Sichtbar sind drei Einträge mit den beiden Werten für den Namen und die Emailadresse.
Abb. 1: Tabellen im sqlitebrowser anschauen
Datei: sqlitebrowser.png
Zusammenfassung - SQLite verstehen
Die Datenbankverwaltung SQLite klingt zunächst nach einem Nischenprodukt, kommt aber heutzutage viel häufiger zum Einsatz, als wir es nach außen hin als Benutzer wahrnehmen. Dazu zählen die
Betriebssysteme für Mobiltelefone wie Android oder iOS, aber auch die Webbrowser Mozilla Firefox und Google's Chrome. SQLite unterstützt einen Großteil der im SQL-92-Standard festgelegten SQL-Sprachbefehle -- Transaktionen, Unterabfragen, Sichten (Views), Trigger und benutzerdefinierte Funktionen.
Die Besonderheit von SQLite ist seine Zwitterrolle. Einerseits ist SQLite sehr klein, andererseits besteht eine SQLite-Datenbank aus nur einer einzigen Datei, die lokal gespeichert wird. Diese Datei beinhaltet alle Tabellen, Indizes, Views und Trigger. Sprich: möchtest Du die Datenbank später an einen anderen Ort umziehen, verschiebst du die Datei einfach in ein anderes Verzeichnis und passt den Pfad im PHP-Skript an.
PHP bietet Dir zwei Möglichkeiten, um SQLite anzubinden. Variante 1 ist ein Websocket und Variante 2 benutzt PHP Data Objects -- kurz PDO -- eine Datenbank-Abstraktionsschicht. Letzteres ist eine Vereinheitlichung, um leichter von PHP aus auf verschiedene Datenbanksysteme zugreifen zu können. PDO stellen wir Dir in einer Fortsetzung dieses Beitrags vor.