Aktueller Standort: Startseite> Neueste Artikel> Detaillierte Erläuterung der Verwendung von STMT_init und fetch () in Verbindung mit

Detaillierte Erläuterung der Verwendung von STMT_init und fetch () in Verbindung mit

M66 2025-05-16

Bei der Verwendung von PHP zum Betrieb einer MySQL-Datenbank bietet die MySQLI- Erweiterung eine objektorientierte Schnittstelle, mit der wir SQL-Anweisungen sicherer und strukturierter ausführen können. Insbesondere bei der Ausführung vorbereiteter Aussagen sind MySQLI :: STMT_INIT und Fetch () zwei sehr kritische Funktionen.

In diesem Artikel wird ausführlich vorgestellt, wie MySQLI :: STMT_INIT () verwendet wird, um Anweisungsobjekte zu initialisieren und die Fetch () -Methode zu kombinieren, um Daten in der Datenbank sicher und effizient zu erhalten.

1. Was ist MySQLI :: STMT_INIT ?

MySQLI :: STMT_INIT () ist eine Methode der MySQLI -Klasse, mit der ein Anweisungsobjekt initialisiert wird ( Mysqli_stmt ). Dieses Objekt kann dann SQL -Anweisungen über die Methode prepe () vorbereiten. Der Vorteil davon ist, dass es Anweisungen wiederverwenden und Parameter binden kann, um die Sicherheit und Effizienz des Codes zu verbessern.

Beispiel:

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

if ($mysqli->connect_errno) {
    die("Verbindung ist fehlgeschlagen: " . $mysqli->connect_error);
}

$stmt = $mysqli->stmt_init();

2. Bereiten Sie SQL -Anweisungen vor und führen Sie sie aus

Erstellen Sie nach dem Erstellen eines Anweisungsobjekts mit STMT_INIT () die Abfrageanweisung mit Prepe () und binden Sie die Parameter mit BIND_PARAM () .

 $query = "SELECT id, name, email FROM users WHERE status = ?";
if ($stmt->prepare($query)) {
    $status = 'active';
    $stmt->bind_param("s", $status);
    $stmt->execute();
}

TIPP: Der erste Parameter "S" von bind_param bedeutet, dass der Parametertyp eine String ( Zeichenfolge ) ist.

3. Binden Sie die Ergebnisse und verwenden Sie Fetch (), um Daten zu extrahieren

Nach der Ausführung der Anweisung müssen wir Bind_result () verwenden, um die Spalte des Abfrageergebnisses an die Variable zu binden, und dann können wir die Fetch () -Methode verwenden, um die Datenzeile nach Zeile zu extrahieren.

 $stmt->bind_result($id, $name, $email);

while ($stmt->fetch()) {
    echo "BenutzerID: $id<br>";
    echo "Benutzer名: $name<br>";
    echo "Post: $email<br><br>";
}

4. Vollständiges Beispiel

Hier ist ein vollständiges PHP -Beispielprogramm:

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

if ($mysqli->connect_errno) {
    die("Verbindung ist fehlgeschlagen: " . $mysqli->connect_error);
}

$stmt = $mysqli->stmt_init();
$query = "SELECT id, name, email FROM users WHERE status = ?";

if ($stmt->prepare($query)) {
    $status = 'active';
    $stmt->bind_param("s", $status);
    $stmt->execute();
    $stmt->bind_result($id, $name, $email);

    echo "<h2>活跃Benutzer列表:</h2>";
    while ($stmt->fetch()) {
        echo "<div>";
        echo "<strong>ID:</strong> $id<br>";
        echo "<strong>Name:</strong> $name<br>";
        echo "<strong>Post:</strong> <a href='mailto:$email'>$email</a><br>";
        echo "<a href='https://m66.net/user/profile.php?id=$id'>Überprüfen Sie die Details</a>";
        echo "</div><hr>";
    }

    $stmt->close();
} else {
    echo "SQL Die Vorverarbeitung schlug fehl: " . $stmt->error;
}

$mysqli->close();
?>