Zum Inhalt springen

PHP MySQLi

In diesem Artikel konzentrieren wir uns auf die PHP MySQLi-Erweiterung, die zur Interaktion mit MySQL-Datenbanken in PHP verwendet wird. Wir geben Ihnen einen Überblick über die Erweiterung, ihre Funktionsweise und Beispiele für deren Anwendung.

Einführung in die MySQLi-Erweiterung

Die MySQLi-Erweiterung ist eine PHP-Erweiterung, die eine Schnittstelle zur Interaktion mit MySQL-Datenbanken in PHP bereitstellt. Sie ist eine verbesserte Version der älteren MySQL-Erweiterung und bietet bessere Sicherheit, Leistung und Funktionalität.

Die MySQLi-Erweiterung bietet zwei verschiedene Schnittstellen zur Interaktion mit MySQL-Datenbanken: eine objektorientierte und eine prozedurale Schnittstelle. Während die prozedurale Schnittstelle (mysqli_connect(), mysqli_query(), usw.) ebenfalls verfügbar ist, wird der objektorientierte Ansatz in modernem PHP allgemein bevorzugt. In diesem Artikel konzentrieren wir uns auf die objektorientierte Schnittstelle.

Verwendung der MySQLi-Erweiterung

Die Verwendung der MySQLi-Erweiterung ist sehr einfach. Sie müssen lediglich ein neues MySQLi-Objekt erstellen, das eine Verbindung zu einer MySQL-Datenbank darstellt. Hier ist ein Beispiel:

Verwendung der MySQLi-Erweiterung?

php
<?php
$mysqli = new mysqli("localhost", "username", "password", "database");
if ($mysqli->connect_error) {
    echo "Failed to connect to MySQL: " . $mysqli->connect_error;
    exit();
}

$result = $mysqli->query("SELECT * FROM users");
while ($row = $result->fetch_assoc()) {
    echo "Name: " . $row["name"] . " - Email: " . $row["email"] . "<br>";
}

$mysqli->close();
?>

In diesem Beispiel erstellen wir ein neues MySQLi-Objekt mit dem mysqli()-Konstruktor und übergeben Hostname, Benutzername, Passwort und Datenbankname als Argumente. Anschließend prüfen wir, ob die Verbindung erfolgreich war, indem wir die Eigenschaft connect_error des MySQLi-Objekts überprüfen.

Anschließend führen wir eine SELECT-Abfrage aus, um alle Zeilen aus einer Tabelle namens users abzurufen. Wir durchlaufen das Ergebnis mit einer while-Schleife und geben den Namen und die E-Mail-Adresse jedes Benutzers aus.

Abschließend schließen wir die MySQLi-Verbindung mit der close()-Methode des MySQLi-Objekts.

Erweiterte Verwendung

Die MySQLi-Erweiterung bietet viele weitere Methoden zur Interaktion mit MySQL-Datenbanken. Beispielsweise können Sie die Methode prepare() verwenden, um eine Anweisung mit Platzhaltern vorzubereiten und diese anschließend mit verschiedenen Parameterwerten auszuführen. Hier ist ein Beispiel:

Erweiterte Verwendung von PHP MySQLi

php
<?php
$age = 18;
$stmt = $mysqli->prepare("SELECT name, email FROM users WHERE age > ?");
$stmt->bind_param("i", $age);
$stmt->execute();
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
    echo "Name: " . $row["name"] . " - Email: " . $row["email"] . "<br>";
}
$stmt->close();
?>

Hinweis: Die Methode get_result() erfordert den mysqlnd-Treiber. Wenn Ihre Umgebung einen anderen Treiber verwendet, müssen Sie Ergebnisvariablen stattdessen mit bind_result() binden.

In diesem Beispiel verwenden wir die Methode prepare(), um eine SELECT-Anweisung mit einem Platzhalter für den Parameter age vorzubereiten. Prepared Statements trennen SQL-Logik von Daten, was SQL-Injection-Angriffe effektiv verhindert, da Benutzereingaben niemals als ausführbarer Code interpretiert werden. Anschließend binden wir den Wert 18 an den Parameter mit der Methode bind_param(). Wir führen die Anweisung mit der Methode execute() aus und rufen das Ergebnis mit der Methode get_result() ab. Anschließend durchlaufen wir das Ergebnis und geben den Namen und die E-Mail-Adresse jedes Benutzers aus.

Fazit

Zusammenfassend lässt sich sagen, dass die MySQLi-Erweiterung ein leistungsstarkes Werkzeug zur Interaktion mit MySQL-Datenbanken in PHP ist. Durch das Verständnis der Verwendung und der erweiterten Anwendungsszenarien können Sie diese Funktion nutzen, um leistungsstarke und sichere datenbankgestützte Anwendungen in Ihren PHP-Skripten zu erstellen.

Praxis

Welche wichtigen Funktionen hat PHP MySQLi?

Finden Sie das nützlich?

Dual-run-Vorschau — vergleichen Sie mit den Symfony-Routen live.