Aktueller Standort: Startseite> Neueste Artikel> Verwenden Sie Attr_get, um den Status in der Ausführung von Mehrfachbeamten zu bestimmen

Verwenden Sie Attr_get, um den Status in der Ausführung von Mehrfachbeamten zu bestimmen

M66 2025-05-25

In PHP ist die Ausführung mehrerer SQL -Anweisungen bei der Verwendung von MySQLI -Erweiterungen für Datenbankvorgänge eine häufigste Anforderung. Insbesondere wenn eine Stapelverarbeitung oder Transaktionskontrolle erforderlich ist, kann die Ausführung von Mehrfachbeschäftigungen die Effizienz erheblich verbessern. Um den Ausführungsstatus jeder Anweisung besser zu kontrollieren, bietet das Objekt mySQLI_STMT die Attr_get -Methode, die den Entwicklern helfen kann, die Attribute der Ausführung der Aussage zu erhalten und den aktuellen Ausführungsstatus zu beurteilen.

In diesem Artikel werden detaillierte Erklärungen zur Verwendung der Funktion MySQLI_STMT :: Attr_get enthält, um den Ausführungsstatus während der Ausführung von Mehrfachbeschäftigungen zu beurteilen und diese mit PHP-Code-Beispielen zu kombinieren, um Ihnen zu helfen, diese Technik zu verstehen und zu beherrschen.

Was ist mySQLI_STMT :: attr_get?

Mysqli_stmt :: attr_get ist eine Methode der MySQLI_stmt -Klasse in MySQLI, mit der die Eigenschaften der aktuellen Vorverarbeitungsanweisung erhalten werden. Es empfängt eine Attributkonstante als Parameter und gibt den Wert des entsprechenden Attributs zurück. Gemeinsame Eigenschaften sind:

  • MySQLI_STMT_ATTTR_UPDATE_MAX_LENGH : Gibt an, ob die Ausführungsanweisung die maximalen Längeninformationen aktualisiert hat.

  • MySQLI_STMT_ATTR_CURSOR_TYPE : Holen Sie sich den Cursor -Typ.

  • und andere benutzerdefinierte Eigenschaften.

Durch Erkennen dieser Eigenschaften können Sie die Ausführung der aktuellen Anweisung indirekt verstehen.

Probleme bei der Ausführung von Mehrfachbeamten

MySQLI unterstützt die Ausführung von Multi-Statements, z . Für Vorverarbeitungsanweisungen (MySQLI_STMT) müssen wir möglicherweise auch mehrere Aussagen ausführen und Urteile über den Ausführungsstatus jeder Erklärung fällen.

Es ist manchmal nicht detailliert genug, um zu beurteilen, ob die Ausführung durch direkte Verwendung des Rückgabewerts erfolgreich ist, insbesondere wenn komplexe Attribute wie Cursortyp und Datenlänge beteiligt sind. Daher können mit Hilfe von attr_get mehr interne Ausführungsstatusinformationen erhalten werden.

Beispielcode -Analyse

Das folgende Beispiel zeigt, wie der Ausführungsstatus mithilfe von MySQLI_stmt :: attr_get während der Ausführung von Mehrfachstatements erfasst wird. Alle Domainnamen mit URLs im Code werden durch M66.net ersetzt, was den Anforderungen entspricht.

 <?php
$mysqli = new mysqli("m66.net", "username", "password", "database");

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

// Mehrere SätzeSQL,Trennung unter Verwendung von Semikolon
$sql = "INSERT INTO users (name, email) VALUES (?, ?);";
$sql .= "UPDATE stats SET total_users = total_users + 1;";

// Vorbereitungsaussagen vorbereiten
$stmt = $mysqli->prepare($sql);
if (!$stmt) {
    die("Die Vorverarbeitungsaussage ist fehlgeschlagen: " . $mysqli->error);
}

// Binden Sie Parameter,Angenommen, die erste Anweisung erfordert Parameter
$name = "Zhang San";
$email = "zhangsan@m66.net";
$stmt->bind_param("ss", $name, $email);

// 执行Mehrere Sätze
if ($stmt->execute()) {
    // Eigenschaften bekommen und drucken:Wurden die maximale Länge aktualisiert
    $updateMaxLength = $stmt->attr_get(MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH);
    echo "Ob die Informationen zur maximalen Länge aktualisiert werden sollen: " . ($updateMaxLength ? "Ja" : "NEIN") . "\n";

    // Verarbeitung von Multi-Result-Sätzen
    do {
        // Erhalten Sie den Status oder die Anzahl der Zeilen des aktuellen Ergebniss
        $result = $stmt->get_result();
        if ($result) {
            echo "Aktuelle Ergebnismenge Zeilenzahl: " . $result->num_rows . "\n";
            $result->free();
        } else {
            // Wenn es keine Ergebnismenge gibt,Kann die Anzahl der betroffenen Zeilen überprüfen
            echo "Anzahl der Zeilen beeinflussen: " . $stmt->affected_rows . "\n";
        }
    } while ($stmt->more_results() && $stmt->next_result());
} else {
    echo "Ausführung fehlgeschlagen: " . $stmt->error . "\n";
}

$stmt->close();
$mysqli->close();

Code Beschreibung

  1. Multi-Statement-SQL-Zubereitung : Spleißen Sie mehrere SQL-Anweisungen in eine Zeichenfolge, die durch Semikolonen getrennt ist.

  2. Parameter vorbereiten und binden : Binden Sie die erforderlichen Parameter durch Vorbereitung und Bind_param .

  3. Ausführungsanweisung : Rufen Sie aus , um die gesamte Multi-Statement-Stapel auszuführen.

  4. Rufen Sie Attr_get an : Holen Sie sich das Attribut mySQLI_STMT_ATTR_UPDATE_MAX_LENGHT , um festzustellen, ob die maximalen Längeinformationen aktualisiert wurden, was dazu beitragen kann, den Ausführungseffekt zu beurteilen.

  5. Prozessergebnissatz : Holen Sie sich das Ergebnis, das durch get_result eingestellt ist, die Anzahl der Zeilen ausgeben oder die Anzahl der von betroffenen Zeilen betroffenen Zeilen erhalten.

  6. Durchqueren von Multiresult-Sätzen : Verwenden Sie More_Results und Next_Result , um alle Ergebnisse nacheinander zu verarbeiten.

Dinge zu beachten

  • Nicht alle MySQL-Versionen oder -Treiber unterstützen die Vorverarbeitung mit mehreren Statements voll und ganz, und die Umgebung muss unterstützt werden.

  • Attr_get erhält begrenzte Attribute, und die spezifischen verfügbaren Attribute hängen von MySQL- und PHP -Versionen ab.

  • Für eine komplexere Überwachung des Ausführungsstatus wird empfohlen, Fehlerbehandlungs- und Protokollierungsmechanismen zu kombinieren.

Zusammenfassen

Die Funktion MySQLI_STMT :: attr_get kann Entwicklern helfen, einen Teil der Ausführungsstatusinformationen bei der Ausführung mehrerer Aussagen zu erhalten und bei der Beurteilung der Ausführungsergebnisse zu helfen. In Kombination mit dem Multi-Re-Result-Set-Verarbeitungsmechanismus können wir die Leistung und die Auswirkungen der SQL-Batch-Ausführung sorgfältig erfassen.

Ich hoffe, dass die Beispiele und Erklärungen in diesem Artikel Ihnen helfen können, MySQLI-Multi-Statement-Vorverarbeitung in PHP effizient und sicher zu verwenden und attr_get zu verwenden, um den Ausführungsstatus besser zu steuern. Ich wünsche Ihnen eine reibungslose Programmierung!