Aktueller Standort: Startseite> Neueste Artikel> STMT_INIT, wie man mit num_rows oder betroffenen_rows arbeitet, um Ergebnisse zu erhalten

STMT_INIT, wie man mit num_rows oder betroffenen_rows arbeitet, um Ergebnisse zu erhalten

M66 2025-05-29

Bei der Verwendung der MySQLI -Erweiterung von PHP für Datenbankvorgänge ist MySQLI :: STMT_INIT () eine wichtige Methode, mit der ein Anweisungsobjekt ( mysqli_stmt ) initialisiert wird, und bereitet sich dann darauf vor, SQL -Aussagen auszuführen. Um festzustellen, ob die Abfrageanweisung das Ergebnis zurückgegeben hat oder wie viele Zeilen betroffen sind, verwenden Sie num_rows (für ausgewählte Anweisungen) oder betroffene_rows (für Einfügen , Aktualisieren oder Löschen ).

In diesem Artikel wird Beispiele verwendet, um zu veranschaulichen, wie Sie MySQLI :: STMT_INIT () verwenden und num_rows und betroffene_rows kombinieren, um die Auswirkungen der Abfrageergebnisse zu erzielen.

1. Vorbereitung: Datenbankverbindung

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

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

2. Verwenden Sie STMT_Init, um die Anweisung zu initialisieren und sich auf die Abfrage vorzubereiten

 $stmt = $mysqli->stmt_init();

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

    $stmt->store_result(); // Dieser Schritt ist ein Muss,ansonsten num_rows Wird immer zurückkehren 0
    echo "Anzahl der zurückgegebenen Zeilen:" . $stmt->num_rows . "<br>";

    if ($stmt->num_rows > 0) {
        $stmt->bind_result($id, $name);
        while ($stmt->fetch()) {
            echo "BenutzerID: $id, Name: $name<br>";
        }
    } else {
        echo "Keine Aufzeichnungen, die den Kriterien entsprechen。";
    }

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

3.. Verwenden Sie betroffene_Rows, um die Anzahl der durch Aktualisierung oder Löschen betroffenen Zeilen zu erhalten

 $stmt = $mysqli->stmt_init();

$sql = "UPDATE users SET status = ? WHERE last_login < ?";
if ($stmt->prepare($sql)) {
    $new_status = 'inactive';
    $cutoff_date = '2024-01-01';
    $stmt->bind_param("ss", $new_status, $cutoff_date);
    $stmt->execute();

    echo "Anzahl der betroffenen Zeilen:" . $stmt->affected_rows;

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

4.. Dinge zu beachten

  1. Bei Verwendung num_rows muss store_result () aufgerufen werden, sonst wird es immer zurückgegeben.

  2. betroffene_rows können direkt gelesen werden, ohne Store_Result () aufzurufen.

  3. Denken Sie nach Verwendung des Anweisungsobjekts daran, $ STMT-> close () aufzurufen, um die Ressource zu veröffentlichen.

  4. Um Fehlermeldungen zu debuggen oder anzeigen, verwenden Sie $ STMT-> Fehler oder $ MySQLI-> Fehler .

V. Schlussfolgerung

Durch rationales Gebrauch von MySQLI :: STMT_INIT () und dem Kombination von num_rows und betroffenen_rows können wir effizienter Feedback- und Ergebnisverarbeitung von Datenbankabfragen verwalten. Dies ist entscheidend für die Entwicklung stabiler und Durchführung von PHP -Anwendungen.