Kapitel 2
db.php – Datenbankverbindung
Diese Datei stellt die Verbindung zur Datenbank her und wird von jeder anderen PHP-Datei ganz oben mit require_once('db.php') eingebunden. So gibt es nur eine einzige Stelle, an der die DB-Zugangsdaten stehen.
Der Code
db.php
<?php
$servername = "localhost";
$username = "root"; // am besten hier einen eigenen benutzer anlegen
$password = "passwort";
$dbname = "webshop_otto";
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname;charset=utf8mb4", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
die("Connection failed: " . $e->getMessage());
}
?>
Was passiert hier zeilenweise
- $servername, $username, $password, $dbname – die Zugangsdaten in Variablen. Für die zertifizierung nicht
rootnehmen, sondern einen eigenen DB-User mit weniger Rechten anlegen (Least-Privilege-Prinzip). - new PDO(...) – baut die Verbindung auf. Der DSN-String enthält Host, DB-Name und wichtig:
charset=utf8mb4(sonst Probleme mit Umlauten und Emojis). - setAttribute ERRMODE_EXCEPTION – ohne das würden PDO-Fehler still verschluckt. So werfen sie Exceptions und man sieht sofort, was kaputt ist.
- try/catch – wenn die Verbindung fehlschlägt (falsches Passwort, DB down), fängt catch den Fehler ab und beendet das Script mit einer Meldung.
Für die echte Produktion: das
$e->getMessage() im die() zeigt technische Details öffentlich (DB-Name, User) – Sicherheitsproblem. Besser: error_log($e->getMessage()) und dem User nur "Serverfehler" zeigen. Für zertifizierung/Übung ist die Version oben okay, weil man den Fehler ja beim Entwickeln sehen will.Merke: das Objekt heißt hier
$conn. Manche Tutorials nennen es $pdo oder $db – muss überall im Projekt gleich sein.