Datenbankverbindung mit PDO in PHP

Lassen Sie uns eine Verbindung zur Datenbank über PDO herstellen. Zuerst speichern wir die Zugangsdaten in Variablen:

php<?php
  $host = 'localhost'; // Hostname (in der Regel immer so)
  $db = 'test';        // Datenbankname
  $user = 'root';      // Benutzername für die Datenbank
  $pass = 'root';      // Passwort für die Datenbank
?>

Nun müssen wir eine Zeichenkette in einem speziellen Format bilden. In dieser Zeichenkette müssen wir den Typ der verwendeten Datenbank (in der Regel 'mysql'), den Hostnamen und den Datenbanknamen angeben:

php<?php
  $dsn = "mysql:host=$host; dbname=$db; charset=utf8";
?>

Dann erstellen wir ein Array mit PDO-Optionen, die wir im Arbeitsprozess verwenden werden (verstehen Sie sie vorerst nicht im Detail):

php<?php
  $opt = [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::ATTR_EMULATE_PREPARES => false,
  ];
?>

Nun können wir die Verbindung zur Datenbank herstellen, indem wir die oben deklarierten Variablen verwenden:

php<?php
  $pdo = new PDO($dsn, $user, $pass, $opt);
?>

Der obige Code führt entweder eine Verbindung zur Datenbank her oder wirft eine Ausnahme. Daher ist es korrekter, die Verbindung in eine try-catch-Konstruktion zu verpacken:

php<?php
  try {
    $pdo = new PDO($dsn, $user, $pass, $opt);
    echo 'DB is connected';
  } catch(PDOException $e) {
    echo "Connection failed: " . $e->getMessage();
  }
?>

Der vollständige Code sieht dann so aus:

php<?php
  $host = 'localhost';
  $db = 'test';
  $user = ''; // Benutzername für die Datenbank
  $pass = ''; // Passwort für die Datenbank
  $charset = 'utf8';
  
  $dsn = "mysql:host=$host; dbname=$db; charset=$charset";
  
  $opt = [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::ATTR_EMULATE_PREPARES => false,
  ];
  
  try {
    $pdo = new PDO($dsn, $user, $pass, $opt);
    echo 'DB is connected';
  } catch(PDOException $e) {
    echo "Connection failed: " . $e->getMessage();
  }
?>
Задание 1

Stellen Sie eine Verbindung zu Ihrer Datenbank auf die im Unterricht beschriebene Weise her.