Aktueller Standort: Startseite> Neueste Artikel> So führen Sie mehrere Anweisungen mit STMT_INIT aus (vorbereitete Anweisung Loop Execution)

So führen Sie mehrere Anweisungen mit STMT_INIT aus (vorbereitete Anweisung Loop Execution)

M66 2025-05-29

Bei der Ausführung von SQL -Anweisungen mithilfe von MySQLi -Erweiterung ist STMT_INIT eine sehr nützliche Funktion, mit der ein MySQLi_stmt -Objekt initialisiert werden kann, sodass wir Vorverarbeitungsanweisungen ausführen können. Mit Vorverarbeitungsanweisungen können Sie Platzhalter in Datenbankabfragen verwenden, um SQL -Injektionsangriffe zu verhindern.

Manchmal müssen wir die gleiche Vorverarbeitungsanweisung mehrmals ausführen, indem wir jedes Mal, wenn wir ausführen, unterschiedliche Parameter verwenden. In diesem Fall können wir STMT_Init verwenden, um die Funktion der Ausführung von Vorverarbeitungsanweisungen mehrmals zu implementieren. Hier ist ein Beispiel, das zeigt, wie STMT_init in PHP verwendet wird, um mehrere SQL -Anweisungen auszuführen:

 <?php
// 1. Erstellen Sie eine Datenbankverbindung
$servername = "localhost";
$username = "root";
$password = "password";
$dbname = "test_database";

// Eine Verbindung erstellen
$conn = new mysqli($servername, $username, $password, $dbname);

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

// 2. verwendenstmt_initInitialisieren Sie Vorverarbeitungsanweisungen
$stmt = $conn->stmt_init();

// Überprüfen Sie, ob die Vorbereitungserklärung erfolgreich ist
if ($stmt->prepare("INSERT INTO users (username, email) VALUES (?, ?)")) {

    // 3. Simulieren Sie einen Datensatz,Diese Daten werden mehrmals eingefügt
    $users = [
        ['john_doe', 'john@m66.net'],
        ['jane_doe', 'jane@m66.net'],
        ['alice_smith', 'alice@m66.net'],
    ];

    // 4. Schleifenausführung von Vorverarbeitungsanweisungen,Benutzerdaten nacheinander einfügen
    foreach ($users as $user) {
        $username = $user[0];
        $email = $user[1];

        // Binden Sie Parameter an die Vorverarbeitungsanweisungen
        $stmt->bind_param("ss", $username, $email);

        // Ausführungsanweisung
        if ($stmt->execute()) {
            echo "Erfolgreich eingefügter Benutzer: $username, $email\n";
        } else {
            echo "Einfügen fehlgeschlagen: " . $stmt->error . "\n";
        }
    }

    // 5. Aussage
    $stmt->close();
} else {
    echo "Vorbereitung der Vorbereitung der Vorbereitung ist fehl: " . $conn->error;
}

// 6. Schließen Sie die Datenbankverbindung
$conn->close();
?>

Code Beschreibung:

  1. Stellen Sie eine Datenbankverbindung fest : Erstens müssen wir eine Verbindung zur MySQL -Datenbank herstellen. In diesem Beispiel wird Localhost als Server verwendet, und Sie müssen die Verbindungsparameter entsprechend der tatsächlichen Situation anpassen.

  2. Initialisierungsanweisung : Verwenden Sie $ conn-> stmt_init (), um ein Anweisungsobjekt zu initialisieren, das für die Ausführung bereit ist. Richten Sie dann die vorverarbeiteten SQL -Anweisungen über die Vorbereitungsmethode ein. In diesem Beispiel bereiten wir eine Einfügung in Anweisung vor, die den Benutzernamen und die E -Mail -Felder in der Benutzertabelle einfügt.

  3. BIND -Parameter : Wir binden PHP -Variablen an Platzhalter in der Vorverarbeitung Anweisungen über die Methode Bind_param . Der Parameter "SS" bedeutet, dass wir an zwei String -Typ -Parameter gebunden sind.

  4. Schleifenausführung : In der Foreach -Schleife übergeben wir in einem Array, das mehrere Sätze von Benutzerdaten enthält. Führen Sie bei jeder Schleife die Ausführungsmethode aus, um eine Datenzeile einzufügen.

  5. Anweisung und Verbindung schließen : Nach Abschluss des Vorgangs schließen wir die STMT- und Datenbankverbindung über die Methode close () .

Vorteil:

  1. Verhindern der SQL -Injektion : Da wir Vorverarbeitungsanweisungen und Parameterbindung verwenden, kann dieser Prozess SQL -Injektionsangriffe effektiv verhindern.

  2. Hocheffizienz : Für dieselbe Abfrageanweisung werden verschiedene Parameter durch Schleifen ausgeführt, die wiederholte Erstellung neuer SQL -Anweisungen und Verbesserung der Effizienz vermeiden.

Anmerkungen:

  1. Stellen Sie bei jedem Ausführen einer Schleife sicher, dass die Methoden BIND_PARAM und Ausführung unterschiedliche Eingabedaten korrekt verarbeiten können.

  2. Wenn Sie große Datenmengen verarbeiten müssen, stellen Sie sicher, dass die Verbindungskonfiguration der Datenbank gleichzeitige Anforderungen verarbeiten und Leistungs Engpässe vermeiden kann.

Auf diese Weise können Sie SQL -Anweisungen mit STMT_INIT in PHP effektiv ausführen und verschiedene Parameter dynamisch übergeben können. Hoffentlich hilft Ihnen dieses Beispiel besser zu verstehen, wie Sie mehrere Vorverarbeitungsanweisungen in PHP ausführen können!