Aktueller Standort: Startseite> Neueste Artikel> So rufen Sie execute () nach der Verwendung von STMT_INIT an

So rufen Sie execute () nach der Verwendung von STMT_INIT an

M66 2025-05-29

Bei der Verwendung von PHP zum Betrieb von MySQL -Datenbanken bietet die MySQLI -Erweiterung eine Unterstützung für eine reichhaltige Vorverarbeitungsanweisungen (vorbereitete Aussagen), die die SQL -Injektionsangriffe effektiv verhindern und die Sicherheit und Effizienz von Datenbankoperationen verbessern kann. Dieser Artikel konzentriert sich darauf, ein Anweisungsobjekt mithilfe der Methode MySQLI :: STMT_INIT zu initialisieren und SQL -Anweisungen über das Objekt auszuführen.

1. Was ist MySQLI :: STMT_INIT ?

MySQLI :: STMT_INIT () ist eine Methode der MySQLI -Klasse, mit der ein leeres Anweisungsobjekt ( mysqli_stmt ) initialisiert wird. Dieses Objekt kann an SQL Query -Anweisungen gebunden werden , indem sie prepect () -Methode aufruft und weiter bezeichnet und weiter bezeichnet wird.

Die grundlegende Syntax ist wie folgt:

 $stmt = $mysqli->stmt_init();

wobei $ MySQLI ein MySQLi -Objekt ist, das mit der Datenbank verbunden wurde.

2. Vollständiges Beispiel: Verwenden Sie STMT_Init, um eine SQL -Abfrage auszuführen

Hier ist ein vollständiges PHP -Beispiel mit STMT_Init -Initialisierungsanweisung und Ausführung von SQL -Abfragen:

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

// Überprüfen Sie die Verbindung
if ($mysqli->connect_error) {
    die("Verbindung ist fehlgeschlagen: " . $mysqli->connect_error);
}

// Initialisieren Sie das Anweisungsobjekt
$stmt = $mysqli->stmt_init();

// Vorverarbeitung SQL Stellungnahme
if ($stmt->prepare("SELECT name, email FROM users WHERE id = ?")) {
    // Binden Sie Parameter
    $id = 1;
    $stmt->bind_param("i", $id);

    // 执行Stellungnahme
    $stmt->execute();

    // Bindungsergebnisvariablen
    $stmt->bind_result($name, $email);

    // Abfragenergebnisse erhalten
    while ($stmt->fetch()) {
        echo "Benutzername: $name, Post: $email<br>";
    }

    // 关闭Stellungnahme
    $stmt->close();
} else {
    echo "SQL Vorverarbeitung失败: " . $stmt->error;
}

// Schließen Sie die Verbindung
$mysqli->close();
?>

3.. Dinge zu beachten

  • Nach dem Aufrufen von STMT_INIT () müssen Sie die Methode Prepe () verwenden, um die SQL -Anweisung tatsächlich zu binden.

  • Die Typparameter in bind_param (), zum Beispiel "I", repräsentiert eine Ganzzahl, und "S" repräsentiert eine Zeichenfolge, muss korrekt eingestellt werden.

  • Nennen Sie $ STMT-> close (), nachdem Sie das Anweisungsobjekt verwendet haben, um die Ressource freizugeben.

4. Warum stmt_init anstelle von direkt $ mysqli-> prepe () verwenden?

Obwohl Sie $ MySQLI-> prepe () für die Erstellung von Anweisungen direkt verwenden können, bietet STMT_INIT () eine detailliertere Steuerung, z. B. nützlicher, wenn Sie prüfen müssen, ob die Anweisung wiederverwendbar ist, oder eine Schnittstelle auf niedriger Ebene verwenden.

5. Beispiele für praktische Anwendungsszenarien