Bei der Entwicklung von PHP -Anwendungen ist die Fehlerbehebung bei Datenbankvorgängen eine sehr häufige Aufgabe. Insbesondere bei Verwendung der MySQLI -Erweiterung verwenden wir häufig die Funktion Prepe () , um SQL -Anweisungen zu erstellen. Manchmal kann sich jedoch merken () vorbereiten () . Wie können wir die spezifischen Fehlerinformationen anzeigen? Die MySQLI :: STMT_INIT -Funktion kann uns helfen, dieses Problem zu lösen und detailliertere Fehlerinformationen bereitzustellen.
MySQLI :: STMT_INIT ist eine Funktion, mit der das Objekt mySQLI_STMT initialisiert wird. Sie können ein vorbereitetes Anweisungsobjekt für die Ausführung von SQL -Anweisungen erstellen. Normalerweise rufen wir die Funktion PREAP () auf, um SQL -Anweisungen vor der Ausführung von SQL -Abfragen zu erstellen. Wenn Prepe () fehlschlägt, kann das Aufrufen von MySQLI_Error () direkt keine spezifischen SQL -Fehlerinformationen erhalten.
Durch die Initialisierung des Anweisungsobjekts STMT_Init können wir die Ursache des Fehlers und detailliertere Fehlerinformationen nach dem Aufrufen von Prepet () anzeigen.
Hier ist ein Beispielcode, der MySQLI :: STMT_INIT verwendet, um SQL -Anweisungsfehler zu behandeln:
<?php
// Datenbankverbindungseinstellungen
$host = 'localhost';
$username = 'root';
$password = '';
$dbname = 'test_db';
// erstellen MySQLi verbinden
$mysqli = new mysqli($host, $username, $password, $dbname);
// 检查verbinden是否成功
if ($mysqli->connect_error) {
die("verbinden失败: " . $mysqli->connect_error);
}
// verwenden stmt_init Initialisierung SQL Anweisungsobjekt
$stmt = $mysqli->stmt_init();
// Vorbereiten SQL Stellungnahme
$sql = "SELECT * FROM non_existing_table WHERE id = ?";
// passieren stmt_init Funktionsansicht prepare() Fehlermeldung beim Fehler
if (!$stmt->prepare($sql)) {
// prepare Bei Versäumnis,Ausgabespezifisch SQL Fehlermeldung
echo "SQL Fehler: " . $stmt->error;
} else {
echo "SQL Vorbereiten成功!";
}
// 关闭verbinden
$stmt->close();
$mysqli->close();
?>
Erstellen Sie eine Datenbankverbindung : Erstellen Sie zunächst eine Verbindung zur Datenbank über New MySQLI () . Wenn die Verbindung fehlschlägt, endet das Skript und die Verbindungsfehlermeldung wird ausgegeben.
Anweisungsobjekt initialisieren : Erstellen Sie ein Anweisungsobjekt $ STMT über MySQLI :: STMT_INIT () , mit dem SQL -Abfragen ausgeführt werden.
SQL-Anweisungen vorbereiten : Verwenden Sie die Funktion $ STMT-> Preped ($ SQL), um die SQL-Anweisung vorzubereiten. Wenn Prepe () fehlschlägt, gibt $ stmt-> Fehler die fehlgeschlagene Fehlermeldung zurück, durch die wir beheben können.
Ausgabefehlermeldung : Wenn Prepe () fehlschlägt, gibt der Code eine spezifische SQL -Fehlermeldung aus, um Entwicklern zu helfen, die Root -Ursache des Problems zu verstehen.
Schließen Sie die Verbindung : Denken Sie nach Abschluss des Vorgangs daran, die Datenbankverbindung zu schließen und die Ressourcen freizugeben.
SQL -Syntaxfehler : Eine der häufigsten Ursachen für Fehler. Wenn ein Problem mit der Syntax der SQL -Anweisung vorliegt, fehlschlägt Prepe () eine Fehlermeldung.
Tabelle oder Feld existiert nicht : Preped () scheitert auch, wenn in der SQL-Abfrage eine nicht existierende Tabelle oder ein nicht existierendes Feld verwendet wird.
Datenbankverbindungsproblem : Wenn ein Problem mit der Datenbankverbindung selbst vorliegt, wirkt sich auch die Ausführung von Prepet () aus.
Durch die Funktion STMT_init können wir die spezifischen Gründe für das Vorbereitung () () ausführlich verstehen, wodurch Fehler effektiv behoben werden können.