Um eine Datenbank-Abfrage auszufĂŒhren, können wir nur die instanzierte Datenbankverbindung (PDO) nutzen um eine regulĂ€re Abfrage an die Datenbank zu senden.
Aus GrĂŒnden der Sicherheit fĂŒhren wir die Abfrage nie direkt aus, sondern bereiten diese zuerst mit der prepare-Methode vor.
$statement=$pdo->prepare('SELECT*FROM users');
Erst in einem zweiten Schritt wird der Datenbank-Befehl mit der execute-Methode effektiv ausgefĂŒhrt.
$statement->execute();// Abfrage wird ausgefĂŒhrt
Resultate ausgeben
Um die Resultate nicht nur abzufragen, sondern auch auszugeben, bietet die PDO-Klasse verschiedene Möglichkeiten. Im folgenden wird die fetchAll-Methode genauer beschrieben.
fetchAll
Die fetchAll-Methode von PDO gibt ein Array zurĂŒck mit sĂ€mtlichen Reihen aus dem Resultat der Datenbankabfrage. Wiederum werden die einzelnen Reihen als eigenes Array (verschachtelt im Resultate-Array) zurĂŒckgegeben.
Wurde kein Resultat anhand der Datenbank-Abfrage gefunden, wird ein leeres Array zurĂŒckgegeben.
$result=$statement->fetchAll();var_dump($result);
Array // Array von sÀmtlichen Resultaten
(
[0] => Array // Verschachteltes Array reprÀsentiert eine Reihe des Suchresultats
(
[name] => Peter
[0] => Peter
[role] => admin
[1] => admin
)
[1] => Array // Verschachteltes Array reprÀsentiert eine Reihe des Suchresultats
(
[name] => Petra // Ausgabe als Wert eines assoziativen Arrays
[0] => Petra // Ausgabe als Wert eines regulÀren Arrays
[role] => user
[1] => user
)
)
Betrachtet man die Array-Struktur, sieht man, dass sĂ€mtliche Werte doppelt aufgefĂŒhrt sind. Einmal als regulĂ€res Array und einmal als assoziatives Array.
Der Grund dafĂŒr liegt darin, dass die Standard-Einstellung der fetchAll-Methode auf PDO::FETCH_BOTH ist. Diese gibt die Resultate immer in den beiden Varianten zurĂŒck. Möchte man dies Ă€ndern, kann die Ausgabe der Resultate mit verschiedenen Einstellungen beeinflusst werden: PHP-Dokumentation.
Aufgabe: Tasks auflisten (Gemeinsam)
Als nÀchstes wollen wir sÀmtliche Tasks in der Tabelle abrufen und auflisten.
Erstelle nun ein Prepare-Statement, welches sÀmtliche Tasks aus der Datenbank abruft und mit einem var_dump-Konstrukt im Controller ausgibt.
Aufgabe: Tasks ausgeben (Gemeinsam)
Anstatt das Array mit dem var_dump-Konstrukt auszugeben, möchten wir diese an die View ĂŒbergeben und in einer ungeordneten Liste angezeigen.