© svetabelaya/Shutterstock.com
PHP End to End – Teil 3

Anbindung der Datenwelt


Der Zugriff von einer PHP-Applikation auf Datenbanken war schon immer eine Kernkompetenz der Sprache, da PHP mit MySQL gewissermaßen verheiratet ist. Inzwischen ist es aber auch kein Problem mehr, mit anderen relationalen oder auch NoSQL-Datenbanken zu arbeiten. In diesem Teil der Serie behandeln wir das Thema noch einmal grundlegend.

Daten für unternehmerische Applikationen werden i. d. R. in umfassenden Datenbanken gespeichert. Lässt sich die Struktur der Daten in Form von Tabellen abbilden, dann haben wir es mit einer relationalen Datenbank zu tun, von deren Art es eine große Anzahl gibt. Dazu gehören beispielsweise MySQL, Microsoft SQL Server, Oracle und PostgreSQL. Für einige Anwendungsfälle hat sich jedoch auch der Einsatz von sogenannten NoSQL-Datenbanken etabliert: Diese arbeiten schemafrei und erlauben damit gegebenenfalls eine einfachere Speicherung von großen Datenmengen mit wechselnder oder uneinheitlicher Struktur. Auch können hier beispielsweise Dokumente und Dateien einfacher als in einer relationalen Datenbank abgelegt werden. Der Zugriff erfolgt dann beispielsweise bei Key-Value-Datenbanken mit Hilfe eines Schlüssels.

PHP-Programmierer sind in keiner Weise festgelegt und können flexibel mit nahezu jeder Datenbank arbeiten. Über eine flexible Schnittstelle ist es möglich, einheitlich auf die Datenbanken zuzugreifen und den Quellcode für das Datenhandling unabhängig zu gestalten. Zum Einsatz kommt hier die PHP-Data-Objects-Erweiterung (PDO). Für die Verwendung von NoSQL-Datenbanken wie etwa MongoDB stehen eigene Treiber zur Verfügung, die ebenfalls problemlos in eine PHP-Installation integriert werden können. In diesem Artikel sehen wir uns an, wie sich die Arbeit mit den unterschiedlichsten Datenbanken aus PHP gestaltet. Wir konzentrieren uns dabei auf die Schnittstelle PDO.

Etwas Architektur

Um mit relationalen Datenbanken aus PHP-Applikationen zu arbeiten, ist es am einfachsten, die generische PDO-Schnittstelle zu verwenden. Jeder Datenbanktreiber, der die PDO-Schnittstelle implementiert, kann spezifische Features als reguläre Funktionen der Erweiterung bereitstellen. Dabei ist zu beachten, dass für die Verwendung einer konkreten Datenbank der spezifische Treiber notwendig ist (Tabelle 1).

Treiber

Unterstützte Datenbanken

PDO_CUBRID

Cubrid

PDO_DBLIB

FreeTDS / Microsoft SQL Server / Sybase

PDO_FIREBIRD

Firebird

PDO_IBM

IBM DB2

PDO_INFORMIX

IBM Informix Dynamic Server

PDO_MYSQL

MySQL 3.x/4.x/5.x

PDO_OCI

Oracle Call Interface

PDO_ODBC

ODBC v3 (IBM DB2, unixODBC und win32 ODBC)

PDO_PGSQL

PostgreSQL

PDO_SQLITE

SQLite 3 und SQLite 2

PDO_SQLSRV

SQLite 3 und SQLite 2

Tabelle 1: Datenbanktreiber für die PHP-Data-Objects-Erweiterung [1]

Technisch stellt sich die Situation dar, wie sie in Abbildung 1 zu sehen ist. Der Quellcode aus PHP zur Arbeit mit den Daten (Lesen, Schreiben, Löschen, Aktualisieren) ist unabhängig von der verwendeten Datenbank. Man programmiert gegen eine einheitliche Schnittstelle (PDO). Der spezifische PDO-Treiber setzt in einem zweiten Schritt die Datenbankabfragen aus PHP in die Anforderungen der entsprechenden Datenbank um.

krypczyk_bochkor_db_1.tif_fmt1.jpgAbb. 1: PDO bietet eine abstrakte Zugriffsschicht aus PHP auf diverse Datenbanken

Wir setzen für die nächsten Schritte voraus, dass ein Konzept für die Datenbank existiert. Wir haben also ein Datenbankschema, das die Aufteilung der Daten in Tabellen regelt, die Abhängigkeiten zwischen den Tabellen über ein Schlüsselkonzept herstellt und das entsprechend normalisiert ist. Entweder existiert die Datenbank bereits und wir müssen für einen Zugriff aus PHP auf die Datenbank sorgen oder wir müssen diese noch anlegen. Auch das kann direkt aus einem PHP-Skript geschehen und ist zum Beispiel der Standard, wenn man ein Content-Management-System (CMS) installiert. Als erstes werden dabei die Tabellen der Nutzer für die Arbeit mit der Datenbank angelegt. Dann werden die initialen Daten via PDO in die Datenbank geschrieben.

Minimale Arbeits- und Testumgebung

Dieser Artikel richtet sich insbesondere auch an Einsteiger und Umsteiger in PHP. Eine minimale Arbeits- und Testumgebung erhalten Sie beispielsweise, wenn Sie das Entwicklungspaket XAMPP [2] einsetzen. XAMPP umfasst einen lokalen Webserver mit integriertem PHP und einer SQL-Installation. Auch weitere Basistools wie phpMyAdmin sind mit an Board. Auf der Webseite finden Sie Installationspakte für alle gängigen Systeme, d. h. Windows, macOS und Linux. Zum Experimentieren eignet sich insbesondere die portable Version für Windows. Laden Sie die zip-Datei herunter und entpacken Sie diese. Sie können eine temporäre Konfiguration mittels des Aufrufs der Datei setup_xampp.bat starten. Den Server starten Sie dann über die Datei xampp_start.exe. Den Erfolg können Sie über das Control Panel (xampp-control.exe) nachvollziehen. Der Server lauscht auf der Adresse localhost (127.0.0.1). Diese lokale Adresse können Sie dann im Browser aufrufen. Legen Sie ein Unterverzeichnis zu Ihrem Ausgabeverzeichnis auf dem Server an, zum Beispiel www. Innerhalb von www legen Sie dann ihre Arbeitsdateien ab. Als Editor können Sie etwa Visual Studio Code verwenden.

Admins Liebling: phpMyAdmin

Datenbanken werden über entsprechende Softwaretools verwaltet und administriert. Hier hat sich phpMyAdmin für MySQL als Standard etabliert. Arbeiten Sie mit der vorgeschlagenen Testumgebung XAMPP (Kasten: „Minimale Arbeits- und Testumgebung“), dann ist dieses Tool bereits auf Ihrem Rechner eingerichtet. Mit Hilfe einer grafischen Oberfläche können wir alle wesentlichen Aufgaben rund um das Management von Datenbanken vornehmen. Dazu gehören (Abb. 2):

krypczyk_bochkor_db_2.tif_fmt1.jpgAbb. 2: phpMyAdmin ist das zentrale Administrationswerkzeug für MySQL-Datenbanken
  • Datenbanken anlegen und löschen: Um eine neue Datenbank anzulegen, muss man einen eindeutigen Namen vergeben und einen passenden Zeichensatz auswählen, zum Beispiel utf8

  • Tabellen anlegen und verwalten: Zum Anlegen einer Tabelle ist ein eindeutiger Name zu definieren und die Anzahl der Spalten festzulegen

  • Tabellenspalten konfigurieren: Für jede Tabellenspalte (Attribute) sind eine Reihe von Angaben vorzunehmen. Wir haben diese Angaben in Tabelle 2 zusammengefasst

  • Datenimport: Übernahme von Daten aus einer anderen Quelle; dazu können beispielsweise Daten in eine bestehende Tabellenstruktur integriert werden

  • Datenexport: Export von Daten aus der Datenbank zur Weiterverarbeitung in einem anderen Programm bzw. einer anderen Datenbank

  • Daten einfügen: Über eine formularähnliche Oberfläche können wir einzelne Datensätze in die Tabellen der Datenba...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Gewinner-Teams

Wir bieten Lizenz-Lösungen für Teams jeder Größe: Finden Sie heraus, welche Lösung am besten zu Ihnen passt.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang