Einführung in PHP und MySQL
PHP und MySQL sind zwei der beliebtesten Technologien für die Webentwicklung. Beide sind Open-Source und werden häufig für dynamische Webanwendungen genutzt.
PHP und MySQL sind zwei der beliebtesten Technologien für die Webentwicklung und wurden dafür ausgelegt, zusammenzuarbeiten. PHP läuft auf dem Server und erzeugt das HTML, das Ihre Besucher sehen; MySQL speichert die Daten, die diese Seiten benötigen — Benutzer, Beiträge, Bestellungen, Kommentare. Fast jede dynamische Website, die Sie kennen (ein Blog, ein Forum, ein Online-Shop), basiert auf dieser Kombination oder einer sehr ähnlichen.
Diese Seite erklärt, was jede Technologie leistet, die zwei Möglichkeiten, wie PHP mit MySQL kommuniziert, und einen vollständigen, ausführbaren Arbeitsablauf: Verbindung herstellen, eine Tabelle erstellen, Daten einfügen und wieder auslesen. Am Ende wissen Sie, welche Werkzeuge Sie verwenden sollen und wo Sie für jede Operation weitermachen können.
Was ist PHP?
PHP steht für PHP: Hypertext Preprocessor und ist eine serverseitige Skriptsprache. „Serverseitig" bedeutet, dass der Code auf dem Webserver ausgeführt wird, bevor etwas an den Browser gesendet wird — der Besucher sieht nie den PHP-Code, nur das daraus erzeugte HTML. Da PHP Benutzereingaben verarbeiten, mit einer Datenbank kommunizieren und bei jeder Anfrage eine andere Seite aufbauen kann, wird es für E-Commerce-Seiten, Foren, Blogs und jede Anwendung eingesetzt, die sich auf Basis von Daten verändert.
Was ist MySQL?
MySQL ist ein relationales Datenbankverwaltungssystem (RDBMS). „Relational" bedeutet, dass Daten in Tabellen aus Zeilen und Spalten gespeichert sind — eine users-Tabelle, eine products-Tabelle — und Tabellen aufeinander verweisen können. PHP sendet Befehle an MySQL mittels SQL (Structured Query Language), der Standardsprache, um eine Datenbank zum Speichern oder Zurückgeben von Daten aufzufordern. MySQL bewahrt die Daten sicher auf der Festplatte zwischen Anfragen, sodass heute eingegebene Informationen auch nächste Woche noch vorhanden sind.
Warum PHP und MySQL zusammen verwenden?
- Kostenlos und Open-Source. Beide sind frei zu nutzen und zu verteilen, sodass Sie eine vollständige Anwendung ohne Lizenzkosten erstellen und hosten können.
- Skalierbar. Derselbe Stack betreibt einen persönlichen Blog oder eine stark frequentierte Seite — Sie fügen Ressourcen hinzu, wenn Daten und Traffic wachsen.
- Leicht zu lernen und gut dokumentiert. PHP hat eine sanfte Lernkurve, MySQL ist allgegenwärtig, und die riesige Community bedeutet, dass die meisten Probleme, auf die Sie stoßen, bereits online beantwortet sind.
- Weitverbreitet unterstützt. Fast jeder Webhoster bietet PHP und MySQL von Haus aus an, und große Unternehmen setzen diese Kombination im Produktivbetrieb ein.
Zwei Verbindungsmöglichkeiten: MySQLi vs. PDO
PHP wird mit zwei modernen Datenbankerweiterungen geliefert. Sie sollten für ein Projekt eine davon wählen und dabei bleiben:
| MySQLi | PDO | |
|---|---|---|
| Funktioniert mit | Nur MySQL | Mehr als 12 Datenbanken (MySQL, PostgreSQL, SQLite…) |
| API-Stile | Prozedural und objektorientiert | Nur objektorientiert |
| Prepared Statements | Ja | Ja |
| Am besten, wenn | Sie sicher sind, nur MySQL zu verwenden | Sie möglicherweise später die Datenbank wechseln |
Vermeiden Sie die alten
mysql_*-Funktionen, die Sie in alten Tutorials finden. Sie wurden in PHP 7 entfernt und sind unsicher. Verwenden Sie MySQLi oder PDO.
Beide Erweiterungen unterstützen Prepared Statements, was das wichtigste Sicherheitsmerkmal hier ist — sie verhindern SQL-Injection-Angriffe. Siehe MySQL Prepared Statements für die vollständige Erklärung.
Verbindung zu einer MySQL-Datenbank herstellen
Eine Verbindung benötigt vier Angaben: den Host, einen Benutzernamen, ein Passwort und den Datenbanknamen. Das folgende Beispiel verwendet den prozeduralen MySQLi-Stil und prüft auf Fehler, bevor es fortfährt.
<?php
$host = 'localhost';
$user = 'username';
$password = 'password';
$dbname = 'database_name';
// Create connection
$conn = mysqli_connect($host, $user, $password, $dbname);
// Always check the connection before doing anything else
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully";
?>Für den objektorientierten MySQLi-Stil, ein vollständiges PDO-Beispiel und Fehlerbehebung bei der Verbindung, siehe PHP mit MySQL verbinden und PHP MySQLi.
Der typische Arbeitsablauf
Sobald Sie verbunden sind, sind fast alle Datenbankoperationen eine der vier Grundoperationen, die oft als CRUD bezeichnet werden — Create, Read, Update, Delete. Jede entspricht einer SQL-Anweisung und hat ein eigenes Kapitel:
- Eine Tabelle erstellen, um festzulegen, wo Daten gespeichert werden — siehe MySQL-Tabelle erstellen.
- Einfügen von Datenzeilen — siehe Daten in MySQL einfügen.
- Lesen (SELECT) von Daten — siehe Daten aus MySQL auswählen.
- Aktualisieren bestehender Zeilen — siehe Daten in MySQL aktualisieren.
- Löschen nicht mehr benötigter Zeilen — siehe Daten in MySQL löschen.
Normalerweise schränken Sie Ergebnisse mit einer WHERE-Klausel ein und sortieren sie mit ORDER BY.
Ein vollständiges Mini-Beispiel
Dieses Skript stellt eine Verbindung her, erstellt eine users-Tabelle, falls sie nicht existiert, fügt eine Zeile ein und liest dann alles zurück. Es verwendet ein Prepared Statement für das Einfügen, damit vom Benutzer bereitgestellte Werte die Abfrage nicht beschädigen können.
<?php
$conn = mysqli_connect('localhost', 'username', 'password', 'database_name');
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
// 1. Create a table
mysqli_query($conn, "
CREATE TABLE IF NOT EXISTS users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50),
email VARCHAR(100)
)
");
// 2. Insert a row safely with a prepared statement
$stmt = mysqli_prepare($conn, "INSERT INTO users (name, email) VALUES (?, ?)");
mysqli_stmt_bind_param($stmt, "ss", $name, $email);
$name = "Ada Lovelace";
$email = "[email protected]";
mysqli_stmt_execute($stmt);
// 3. Read the data back
$result = mysqli_query($conn, "SELECT id, name, email FROM users");
while ($row = mysqli_fetch_assoc($result)) {
echo $row['id'] . ": " . $row['name'] . " (" . $row['email'] . ")\n";
}
mysqli_close($conn);
?>Das Argument "ss" teilt MySQL mit, dass beide gebundenen Werte Zeichenketten sind. Da die Werte getrennt vom SQL-Text gebunden werden, kann ein Angreifer über das Feld name oder email keinen schädlichen SQL-Code einschleusen.
Häufige Fallstricke
- Die Verbindung nicht prüfen. Wenn Anmeldedaten oder der Host falsch sind, schlägt jeder spätere Aufruf stillschweigend fehl. Verwenden Sie immer
die()oder behandeln Sie den Fehler direkt nach der Verbindungsherstellung. - Abfragen mit Zeichenkettenverkettung aufbauen. Das direkte Einfügen von Benutzereingaben in eine SQL-Zeichenkette öffnet SQL-Injection Tür und Tor. Verwenden Sie stattdessen Prepared Statements.
- Datenbankfehler für Benutzer sichtbar lassen. Im Produktionsbetrieb sollten Sie Fehler protokollieren, anstatt
mysqli_connect_error()auf der Seite auszugeben — das kann Serverdetails preisgeben.
Fazit
PHP und MySQL ermöglichen es Ihnen, dynamische, datengetriebene Websites mit kostenlosen, gut unterstützten Werkzeugen zu erstellen. Verbinden Sie sich mit MySQLi oder PDO, verwenden Sie für Benutzereingaben immer Prepared Statements, und denken Sie daran, dass fast jede Datenbankaufgabe eine der vier CRUD-Operationen ist. Folgen Sie von hier aus den obigen Workflow-Links, um jede Operation im Detail zu erlernen.