Diese Lektion erläutert Schritt-für-Schritt wie ein PHP-Skript mit einer Datenbank verbindet. Dies ist ein erforderlicher Schritt, um Daten mittels PHP aus einer Datenbank auszulesen. WordPress wäre sonst nicht in der Lage, den Content deines Posts auszulesen und würde nur ein leeres Theme an den Nutzer zurück geben.
Wir bauen hier eine Brücke von Theme zu Content, von PHP zu MySQL.
Wenn Du Content aus einer Datenbank auslesen möchtest, benötigst Du mindestens die folgenden Funktionen:
Es gibt nun verschiedene Szenarien des Auslesens von Daten, die wir uns anschauen wollen.
Der folgende Quellcode ist ein Beispiel für einen vollständigen PHP-Datenbank-Roundtrip:
1 2 3 4 5 6 7 | <?php $server = "dbs.your-domain.com"; $user = "bob"; $password = "P4ssW0rD!"; $database = "wordpress"; $conn = mysqli_connect($server, $user, $password, $database); ?> |
Der oben aufgeführte Quellcode befähigt dich zwar zum Aufbau einer Datenbankverbindung ausgehend von deinem PHP-Skript. Doch bislang haben wir noch keine Daten erhalten.
1 2 3 4 5 | <?php $stmt = mysqli_query($conn, "SELECT TEXT FROM TEST") or die ( mysql_error() ); $row = mysqli_fetch_row($stmt); echo $row[0]; // gives the first item of TEXT in TEST ?> |
Die letzten zwei Zeilen erlauben das Auslesen von Daten — jedoch nur für die erste Zeile (den ersten Datensatz) und den ersten darin befindlichen Attribut-Wert.
Wenn Du alle Zeilen einer Tabelle TEST für das Attribut TEXT auslesen möchtest, müsstest Du eine WHILE-Schleife verwenden:
1 2 3 4 5 6 | <?php $stmt = mysqli_query($conn, "SELECT TEXT FROM TEST") or die ( mysql_error() ); while ($row = mysqli_fetch_row($stmt)) { echo $row[0]; // gibt aktuellen Wert von TEXT in TEST } ?> |
Diese WHILE-Schleife befähigt dich zur Ausgabe aller Werte des Attributes TEXT in TEST.
Wenn Du alle Zeilen der Tabelle TEST für mehr als ein Attribut auslesen möchtest, geht dies folgendermaßen:
1 2 3 4 5 6 7 8 9 | <?php $stmt = mysqli_query($conn, "SELECT ID, TEXT FROM TEST") or die ( mysql_error() ); $column_count = mysqli_num_fields($stmt); while ($row = mysqli_fetch_row($stmt)) { for ($j = 0; $j < $column_count; $j++) { echo $row[$j]; // gibt aktuellen Spalten-Wert von TEST } } ?> |
Du siehst hier, dass wir eine FOR-Schleife in die WHILE-Schleife gesetzt haben. Diese FOR-Schleife zählt durch jedes Attribut (Spalte) einer Tabelle, während die WHILE-Schleife außerhalb weiterhin jede Zeile ausliest.
Der Vorteil dieses Quellcodes ist, dass Du ihn für jede Tabelle und jedes Attribut wiederverwenden kannst.
Diese Lektion ist fundamental wichtig für die Verknüpfung zwischen PHP und MySQL. In den nächsten Lektionen werden wir nun alltägliches Daten-Auslesen behandeln — zunächst demonstriert an einem praktischen Beispiel: einem Login-Skript in PHP, welches Benutzerdaten aus einer MySQL-Datenbank ausliest.