03 Datenbankabfragen

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-Dokumentationarrow-up-right.

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.

Last updated

Was this helpful?