Aktueller Standort: Startseite> Neueste Artikel> So erfassen Sie Abfragebereiche durch MySQLI_STMT :: $ ERROR UND MYSQLI_STMT :: STORE_RESULT ()

So erfassen Sie Abfragebereiche durch MySQLI_STMT :: $ ERROR UND MYSQLI_STMT :: STORE_RESULT ()

gitbox 2025-05-26

Bei der Interaktion mit MySQL -Datenbanken mit PHP müssen wir häufig SQL -Abfragen durchführen. Wenn die Abfrage fehlschlägt, kann der korrekte Fehlerbehandlungsmechanismus uns helfen, das Problem zu diagnostizieren und entsprechend damit umzugehen. Die MySQLI -Erweiterung bietet mehrere Tools, mit denen Entwickler SQL -Abfragefehler fangen und umgehen können, einschließlich der MySQLi_stmt :: $ -Fehler und MySQLi_stmt :: Store_Result () Methoden.

In diesem Artikel wird ausführlich erläutert, wie diese beiden Methoden zum Erkennen und Verarbeiten von SQL -Abfragenfehlern verwendet und den entsprechenden PHP -Beispielcode angezeigt werden.

1. Überprüfen Sie Abfragefehler mithilfe von MySQLI_STMT :: $ ERROR

Bei der Ausführung von SQL -Abfragen ist MySQLI_STMT :: $ ERROR eine sehr nützliche Eigenschaft, die Fehlerinformationen erhalten kann, wenn die aktuelle SQL -Anweisung ausgeführt wird. Durch die Überprüfung dieser Eigenschaft können wir schnell feststellen, ob die Abfrage erfolgreich ausgeführt wird.

1.1 Beispielcode: Grundlegende Abfrageausführung

 <?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);
}

// Vorbereiten SQL Stellungnahme
$query = "SELECT * FROM users WHERE id = ?";
$stmt = $mysqli->prepare($query);

// prüfen SQL Stellungnahme是否Vorbereiten成功
if ($stmt === false) {
    die("VorbereitenStellungnahme失败: " . $mysqli->error);
}

// Binden Sie Parameter
$id = 1;
$stmt->bind_param("i", $id);

// Eine Frage ausführen
if (!$stmt->execute()) {
    // verwenden mysqli_stmt::$error Fehlermeldung abrufen
    die("Eine Frage ausführen失败: " . $stmt->error);
}

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

In diesem Beispiel erhalten wir die detaillierten Fehlerinformationen, wenn die SQL-Abfrage $ stmt-> Fehler fehlschlägt. Auf diese Weise können Entwickler die spezifischen Gründe für das Versagen des Abfrages verstehen und weitere Debuggen oder Reparaturen durchführen.

2. Verwenden Sie MySQLI_STMT :: Store_Result () , um das Ergebnissatz zu verarbeiten

Die Methode MySQLI_STMT :: Store_Result () wird verwendet, um das Ergebnissatz aus dem MySQLI -Anweisungsgriff zu extrahieren und zu speichern. Es ist sehr nützlich für die Handhabungsergebnisse ausgewählten Abfragen. Wenn die Abfrage keine Zeilen zurückgibt (z. B. die Abfragebedingungen nicht übereinstimmen), gibt die Store_Result () -Methode false zurück, sodass wir sie verwenden können, um zu überprüfen, ob die Abfrage die Daten erfolgreich erhalten hat.

2.1 Beispielcode: Überprüfen Sie die Abfrageergebnisse

 <?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);
}

// Vorbereiten SQL Stellungnahme
$query = "SELECT * FROM users WHERE id = ?";
$stmt = $mysqli->prepare($query);

// prüfen SQL Stellungnahme是否Vorbereiten成功
if ($stmt === false) {
    die("VorbereitenStellungnahme失败: " . $mysqli->error);
}

// Binden Sie Parameter
$id = 1;
$stmt->bind_param("i", $id);

// Eine Frage ausführen
if (!$stmt->execute()) {
    die("Eine Frage ausführen失败: " . $stmt->error);
}

// Lagernergebnisse
$stmt->store_result();

// prüfen结果集的行数
if ($stmt->num_rows === 0) {
    echo "Kein Benutzer, der die Kriterien erfüllt。";
} else {
    // Das Ergebnissatz ist nicht leer,Datenverarbeitung durchführen
    echo "Abfrage erfolgreich,Die Ergebnisse sind wie folgt:";
    // Verarbeitungsergebnisse
}

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

In diesem Beispiel verwenden wir die Store_Result () -Methode, um das Ergebnis der Abfrage in den Speicher zu speichern, und dann $ stmt-> num_rows, um die Anzahl der zurückgegebenen Ergebniszeilen zu überprüfen. Wenn keine Datenzeilen zurückgegeben werden, können wir diese Situation "kein Ergebnis" bewältigen.

3. Fehlerbehandlung und -Debuggen

Bei Verwendung von MySQLI_STMT :: $ ERROR UND MYSQLI_STMT :: STORE_RESULT () für die Fehlerverarbeitung. Zusätzlich zur Erfassung von Fehlerinformationen und der Überprüfung der Anzahl der Ergebnisse der Ergebnisse können Sie auch einige Protokollierung und Debugging durchführen. Hier sind einige häufige Tipps zur Fehlerbehandlung:

  • Protokollierung : Fehlerinformationen in einer Protokolldatei aufnehmen, anstatt sie direkt an den Benutzer anzuzeigen, wodurch vertrauliche Informationen aus der Datenbank ausgelöst werden können.

  • Benutzerfreundliche Fehlermeldung : Geben Sie für Endbenutzer freundliche Eingabeaufforderungsinformationen an, um zu vermeiden, dass die zugrunde liegende Datenbankfehlermeldung aufgedeckt wird.

  • SQL -Abfrageoptimierung : Stellen Sie vor der Ausführung von Abfragen sicher, dass SQL -Anweisungen gültig sind, und vermeiden Sie häufig häufige Schwachstellen für SQL -Injektionen.

4. Zusammenfassung

Durch die Verwendung von MySQLI_STMT :: $ ERROR UND MYSQLI_STMT :: STORE_RESULT () können wir SQL -Abfragenausfälle besser verarbeiten und erkennen. In der tatsächlichen Entwicklung kann ein guter Fehlermechanismus nicht nur die Robustheit des Codes verbessern, sondern auch dabei helfen, Probleme in einer Produktionsumgebung schnell zu lokalisieren und zu lösen.

Mit einer Kombination dieser beiden Methoden können Sie die Details von Abfragebefehlern effektiv erfassen und den Entwicklern ermöglichen, schnell auf Abfrageberechnen zu reagieren.