Zum Inhalt springen

PHP-Funktion mysqli_prepare()

In diesem Artikel diskutieren wir die mysqli_prepare()-Funktion in PHP, die zum Vorbereiten einer SQL-Anweisung für die Ausführung verwendet wird.

Einführung in die mysqli_prepare()-Funktion

Die mysqli_prepare()-Funktion ist eine integrierte Funktion in PHP, die zum Vorbereiten einer SQL-Anweisung für die Ausführung dient. Die mysqli_prepare()-Funktion erstellt ein Prepared-Statement-Objekt und gibt eine Referenz auf dieses Objekt zurück. Prepared Statements sind ein leistungsstarkes Werkzeug für die Arbeit mit Datenbanken, da sie es ermöglichen, sichere, parametrisierte SQL-Abfragen zu schreiben.

Verwendung der mysqli_prepare()-Funktion

Die Verwendung der mysqli_prepare()-Funktion ist unkompliziert. Hier ist ein Beispiel:

Wie verwendet man die mysqli_prepare()-Funktion?

php
<?php
$mysqli = new mysqli("localhost", "username", "password", "database");

if ($mysqli->connect_errno) {
    echo "Failed to connect to MySQL: " . $mysqli->connect_error;
    exit();
}

$query = "SELECT * FROM users WHERE id=?";
$stmt = $mysqli->prepare($query);

if (!$stmt) {
    echo "Prepare failed: " . $mysqli->error;
    exit();
}

$id = 1;
$stmt->bind_param("i", $id); // "i" specifies that the variable is an integer

if (!$stmt->execute()) {
    echo "Execute failed: " . $stmt->error;
} else {
    // Note: get_result() requires the mysqlnd driver.
    // For other drivers, use mysqli_stmt_fetch() instead.
    $result = $stmt->get_result();
    while ($row = $result->fetch_assoc()) {
        // process the row
    }
}
$stmt->close();
$mysqli->close();
?>

In diesem Beispiel erstellen wir zunächst ein neues MySQLi-Objekt mit der mysqli-Klasse. Anschließend prüfen wir mit der Eigenschaft connect_errno, ob die Verbindung erfolgreich war. Ist die Verbindung erfolgreich, definieren wir eine SQL-Abfrage, die alle Zeilen aus der Tabelle users auswählt, bei denen die Spalte id einem Platzhalterwert entspricht. Danach rufen wir $mysqli->prepare() mit dem Abfragestring auf, um ein Prepared-Statement-Objekt zu erstellen, und überprüfen, ob die Vorbereitung erfolgreich war. Anschließend setzen wir die Variable $id auf 1, bevor wir sie mit $stmt->bind_param() an den Platzhalter binden. Das "i" im Typenstring gibt an, dass die gebundene Variable eine Ganzzahl (Integer) ist. Andere unterstützte Typen sind "s" für String, "d" für Gleitkommazahl (Double) und "b" für BLOB. Danach führen wir das Prepared Statement mit $stmt->execute() aus und fügen eine Fehlerbehandlung hinzu, falls die Ausführung fehlschlägt. Anschließend rufen wir den Ergebnisdatensatz mit $stmt->get_result() ab und durchlaufen die Zeilen mit $result->fetch_assoc(). Abschließend schließen wir das Statement und die Verbindung mit der Methode close().`

Fazit

Zusammenfassend lässt sich sagen, dass die mysqli_prepare()-Funktion ein leistungsstarkes Werkzeug für die Arbeit mit Datenbanken in PHP ist. Durch das Verständnis der Funktionsweise können Sie sichere, parametrisierte SQL-Abfragen schreiben, die resistent gegen SQL-Injection-Angriffe sind.

Praxis

Was trifft auf Prepared Statements in PHP zu?

Finden Sie das nützlich?

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