DSN zusammensetzen
Ergänze den DSN für unser Docker-Projekt.
mysql:host=____;port=3306;dbname=____;charset=____
📖 Nachlesen: Handout Tag 2 · Block 2 · Inhalt (DSN)
Tag 2 · Block 2 · BK2 · CRUD-Operationen
host=db, nicht localhost.ERRMODE_EXCEPTION, FETCH_ASSOC, EMULATE_PREPARES => false.fetch() liefert eine Zeile (oder false), fetchAll() alle Zeilen.📖 Lies zuerst im Handout: Handout Tag 2 · Block 2 · Inhalt, Abb. 2.1 und 2.2. Die Aufgaben prüfen, ob du es verstanden hast – nicht, ob du es findest.
Ergänze den DSN für unser Docker-Projekt.
mysql:host=____;port=3306;dbname=____;charset=____
📖 Nachlesen: Handout Tag 2 · Block 2 · Inhalt (DSN)
PHP meldet Connection refused, im DSN steht host=localhost. Warum?
📖 Nachlesen: Handout Tag 2 · Block 2 · MERKE
Welche Option ist gemeint?
📖 Nachlesen: Handout Tag 2 · Block 2 · Inhalt und Abb. 2.1
PDOException.Du bist jetzt der Angreifer. Der Code unten holt einen Kurs anhand der id aus der URL. Erreiche die drei Ziele.
📖 Nachlesen: Handout Tag 2 · Block 2 · Prepared Statements und SQL-Injection-Schutz, Abb. 2.2
$id = $_GET['id'];
$stmt = db()->query("SELECT * FROM kurse WHERE id = {$id}");
$kurse = $stmt->fetchAll();Welche Zeilen sind unsicher?
📖 Nachlesen: Handout Tag 2 · Block 2 · ACHTUNG («String-Konkatenation in SQL ist das Alarm-Signal»)
Mehrere Antworten richtig.
Was brauchst du bzw. was kommt zurück?
📖 Nachlesen: Handout Tag 2 · Block 2 · Inhalt (letzter Absatz)
| Antwort | |
|---|---|
getAllKurse() – Liste aller Kurse | |
getKursById(3) – genau ein Kurs | |
Was liefert fetch(), wenn keine Zeile passt? |
Erst wenn Teil 1 erledigt ist. Dann hast du alles, was du dafür brauchst.
Arbeite allein in deinem eigenen Projekt. Der Walkthrough im Handout ist deine Notfall-Hilfe – versuch es zuerst ohne.
src/db.php mit der Funktion db() (Singleton).src/KursRepository.php mit getAllKurse(): array (nutzt query()).getKursById(int $id): ?array (nutzt prepare()).public/index.php und gib das Ergebnis als JSON mit korrektem Header aus.curl http://localhost:8080/ – erwartet: ein JSON-Array.Zum Schluss: committen und pushen
git add . git commit -m "feat: PDO-Verbindung und KursRepository (Lab 2.2)" git push