Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
| Nächste Überarbeitung | Vorherige Überarbeitung | ||
| informatik:php:php-programmierkurs:php-p7 [2018/03/20 18:20] – angelegt jonathan.pfeiffer | informatik:php:php-programmierkurs:php-p7 [2025/12/03 16:20] (aktuell) – [Datensätze ausgeben] jonathan.pfeiffer | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | ====== PHP-Programmierkurs [7] - Datenbankabfrage | + | ====== PHP-Programmierkurs [7] - Datenbankverbindung |
| In diesem Lernpfad, erfährst du, wie du eine dynamische Schnittstelle zwischen dem Betrachter einer Internetseite und den Inhalten einer MySQL-Datenbank erzeugt wird. | In diesem Lernpfad, erfährst du, wie du eine dynamische Schnittstelle zwischen dem Betrachter einer Internetseite und den Inhalten einer MySQL-Datenbank erzeugt wird. | ||
| <tabbox Verbindung> | <tabbox Verbindung> | ||
| **Verbindung aufnehmen**\\ | **Verbindung aufnehmen**\\ | ||
| - | Zunächst muss eine Verbindung zur Datenbank | + | Zunächst muss eine Verbindung zur Datenbank |
| \\ | \\ | ||
| <code php> | <code php> | ||
| Zeile 15: | Zeile 15: | ||
| die(" | die(" | ||
| echo " | echo " | ||
| - | <tabbox > | + | </ |
| + | \\ | ||
| + | * Die Funktion | ||
| + | * Der Rückgabewert der Funktion | ||
| + | |||
| + | < | ||
| + | <code php> | ||
| + | /* SQL-Abfrage ausführen */ | ||
| + | $res = mysqli_query($verbindung, | ||
| + | </ | ||
| + | * Die Funktion | ||
| + | * Falls die Abfrage erfolgreich ist, liefert die Funktion eine Ergebniskennung zurück (hier in der Variablen | ||
| + | < | ||
| + | |||
| + | <code php> | ||
| + | /* Anzahl Datensätze ermitteln und ausgeben */ | ||
| + | $num = mysqli_num_rows($res); | ||
| + | if($num > 0) echo " | ||
| + | else echo "Keine Ergebnisse< | ||
| + | </ | ||
| + | * Die Funktion | ||
| + | |||
| + | <tabbox Datensätze ausgeben> | ||
| + | **Möglichkeit 1**\\ | ||
| + | In diesem Beispiel hat die Tabelle fünf Spaltenattribute.\\ | ||
| + | <code php> | ||
| + | /* Datensätze aus Ergebnis ermitteln, */ | ||
| + | /* in Array speichern und ausgeben */ | ||
| + | while ($dsatz = mysqli_fetch_assoc($res)) | ||
| + | { | ||
| + | echo $dsatz[" | ||
| + | . $dsatz[" | ||
| + | . $dsatz[" | ||
| + | . $dsatz[" | ||
| + | . $dsatz[" | ||
| + | } | ||
| + | |||
| + | |||
| + | </ | ||
| + | * Die Funktion | ||
| + | * Die Zuweisung des Datenbankfelds an das assoziative Feld $dsatz wird gleichzeitig dazu verwendet, eine while -Schleife zu steuern. Die Schleife dient dazu, alle Datensätze des Ergebnisses auszugeben. Falls das Ergebnis aus mindestens einem Datensatz besteht, ist die Zuweisung | ||
| + | * Beachte: Es handelt sich nicht um einen Vergleich, sondern um eine Zuweisung! Es werden also zwei Anweisungen in einem ausgeführt: | ||
| + | * Der Datensatzzeiger wird durch den wiederholten Funktionsaufruf irgendwann am Ende des Abfrageergebnisses anlangen. Die Funktion liefert in diesem Fall keinen weiteren Datensatz mehr. Damit wird die Zuweisung | ||
| + | * Innerhalb der Schleife wird jeweils der Inhalt eines Elements des Felds '' | ||
| + | |||
| + | \\ | ||
| + | **Möglichkeit 2**\\ | ||
| + | <code php> | ||
| + | echo "< | ||
| + | |||
| + | $satz = mysqli_fetch_array($res, | ||
| + | while ($satz) | ||
| + | { | ||
| + | echo " | ||
| + | foreach ($satz as $feld) | ||
| + | { | ||
| + | echo " | ||
| + | } | ||
| + | echo " | ||
| + | |||
| + | $satz = mysqli_fetch_array($res, | ||
| + | } | ||
| + | |||
| + | echo "</ | ||
| + | |||
| + | $anzahl = mysqli_num_rows($res); | ||
| + | echo " | ||
| + | </ | ||
| + | |||
| + | <tabbox Letzte ID> | ||
| + | Mit dieser Abfrage lässt sich die letzte ID abfragen. Das macht vorallem dann Sinn, wenn die ID inkrementiert wird (Auto Increment), also schrittweise hochgezählt wird. \\ | ||
| + | < | ||
| + | //SQL Abfrage Letzte ID | ||
| + | $abfrageLetzteID = " | ||
| + | | ||
| + | fehlgeschlagen! " . mysqli_error($verbindung)); | ||
| + | //Ergebnis ausgeben | ||
| + | echo "< | ||
| + | |||
| + | $satz = mysqli_fetch_array($ergebnisLetzteID, | ||
| + | while ($satz) | ||
| + | { | ||
| + | echo " | ||
| + | |||
| + | | ||
| + | { | ||
| + | |||
| + | echo " | ||
| + | } | ||
| + | echo " | ||
| + | $satz = mysqli_fetch_array($ergebnisLetzteID, | ||
| + | } | ||
| + | echo "</ | ||
| + | </ | ||
| + | < | ||
| + | Mit '' | ||
| + | <code php> | ||
| + | $abfrage = " | ||
| + | $ergebnis = mysqli_query($verbindung, | ||
| + | fehlgeschlagen! " . mysqli_error($verbindung)); | ||
| + | $satz = mysqli_fetch_array($ergebnis, | ||
| + | |||
| + | //implode verbindet Array-Elemente zu einer Zeichenkette | ||
| + | $neueZeichenkette = implode(",", | ||
| + | |||
| + | //Die Variable ($neueZeichenkette) kann dann wie gewohnt mit der echo-Anweisung ausgegeben werden. | ||
| + | </ | ||
| + | |||
| + | <tabbox Daten einfügen> | ||
| + | **Daten einfügen mit INSERT INTO**\\ \\ | ||
| + | <code php> | ||
| + | |||
| + | |||
| + | $sqlDaten1 = " | ||
| + | VALUES (' | ||
| + | |||
| + | if ($verbindung-> | ||
| + | echo "New record created successfully"; | ||
| + | } | ||
| + | else { | ||
| + | echo " | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | \\ | ||
| + | **Mit Variablen**\\ \\ | ||
| + | <code php> | ||
| + | |||
| + | $variable1 = " | ||
| + | $variable2 = " | ||
| + | $variable3 = " | ||
| + | |||
| + | $sqlDaten1 = " | ||
| + | VALUES (' | ||
| + | |||
| + | if ($verbindung-> | ||
| + | echo "New record created successfully"; | ||
| + | } | ||
| + | else { | ||
| + | echo " | ||
| + | } | ||
| + | </ | ||
| + | <tabbox Verbindung schließen> | ||
| + | Die Verbindung zur Datenbank wird durch den Aufruf der Funktion '' | ||
| + | |||
| + | <code php> | ||
| + | /* Verbindung schließen */ | ||
| + | mysqli_close($verbindung); | ||
| + | </ | ||
| + | |||
| + | <tabbox Erklärvideos> | ||
| + | **#1** | ||
| + | Dateien zum Video: {{ : | ||
| + | {{ : | ||
| + | \\ | ||
| + | \\ | ||
| + | **#2**\\ | ||
| + | Tabelle --> Spalte hinzufügen in phpmyadmin\\ | ||
| + | \\ | ||
| + | {{ : | ||
| </ | </ | ||
| - | {{tag> | + | {{tag> |