In der PHP -Entwicklung ist das Fehlerdebuggen von SQL -Abfragen normalerweise eine mühsame Aufgabe, insbesondere wenn die Abfrageanweisung komplex ist und mehrere Bedingungen und Klauseln enthält. Die MySQLi_stmt :: $ -IR -ERROR -Eigenschaft bietet uns ein sehr effektives Werkzeug, um Fehler in SQL -Abfragen schnell zu entdecken und zu beheben, insbesondere in den Klauseln.
Erstens ist MySQLI_STMT :: $ ERROR eine Eigenschaft der MySQLi_stmt -Klasse, die die Fehlerinformationen speichert, die erzeugt werden, wenn die letzte SQL -Anweisung ausgeführt wird. Normalerweise gibt MySQLI_STMT :: $ ERROR eine Fehlerzeichenfolge zurück. Wenn es bei der Ausführung von SQL Query kein Problem gibt, gibt die Eigenschaft eine leere Zeichenfolge zurück.
Dies macht MySQLI_STMT :: $ ERROR ein wichtiges Instrument zum Fangen von SQL -Fehlern, insbesondere beim Debuggen des Komplexes dort, wo Klauseln.
In der Where -Klausel gehören zu den allgemeinen Fehlern:
Falsche Spalte oder Tabellenname
Falscher Vergleich Operator (wie Verwendung == anstelle von = )
Falsche Syntax (z. B. fehlende Klammern)
Unangemessener Datentypvergleich (z. B. Vergleich von Zeichenfolgen mit Zahlen)
Diese Fehler sind normalerweise nicht leicht intuitiv zu erkennen, insbesondere wenn die SQL -Abfrageanweisungen lang sind.
Hier sind die Schritte, um SQL -Abfragen zu debuggen und zu finden , wo Klauselfehler über MySQLI_STMT :: $ ERROR :
Erstellen Sie zunächst eine MySQLI -Datenbankverbindung und erstellen Sie eine SQL -Anweisung.
<?php
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_error) {
die("Verbindung ist fehlgeschlagen: " . $mysqli->connect_error);
}
// Vorverarbeitungsaussagen
$stmt = $mysqli->prepare("SELECT * FROM users WHERE username = ? AND age > ?");
if ($stmt === false) {
die("Die Erklärung ermöglichte die Erklärung nicht: " . $mysqli->error);
}
?>
Dann binden wir die Abfrageparameter und führen die Anweisung aus. Hier können wir das Altersfeld in dem Where -Klauselfehler absichtlich machen, z. B. einen illegalen Alterswert.
<?php
$username = "john_doe";
$age = "twenty"; // Hier setzen wir das Alter absichtlich auf eine Zeichenfolge,Keine Zahlen
$stmt->bind_param("si", $username, $age);
$stmt->execute();
?>
Nachdem Sie die SQL -Abfrage ausgeführt haben, können Sie überprüfen, ob die SQL -Anweisung erfolgreich über MySQLi_stmt :: $ error ausgeführt wird. Wenn ein Fehler auftritt, wird eine detaillierte Fehlermeldung zurückgegeben, sodass wir das Problem schnell finden können.
<?php
if ($stmt->error) {
echo "SQL Fehler: " . $stmt->error;
} else {
echo "Abfrage erfolgreich";
}
?>
Zu diesem Zeitpunkt gibt $ STMT-> Fehler eine Fehlermeldung aus, die wie folgt ähnelt:
SQL Fehler: Unknown column 'twenty' in 'where clause'
Aus der Fehlermeldung können Sie feststellen, dass ein Fehler im Alter in der WHERE -Klausel aufgetreten ist, da die eingehende zwanzig Zeichenfolge keine gesetzliche Nummer ist.
Zusätzlich zur Verwendung von MySQLI_STMT :: $ ERROR können Sie einige zusätzliche Debugging -Schritte ausführen:
Drucken einer vollständigen SQL -Abfrage : Manchmal ist das manuelle Ansehen von SQL -Abfragen auch eine effektive Möglichkeit zum Debuggen. Obwohl MySQLI nicht direkt die Ausgabebeding -Abfrageanweisungen unterstützt, können Sie Abfragebräge manuell erstellen und ausgeben.
MySQL -Fehlerprotokoll anzeigen : Wenn der Datenbankserver dies unterstützt, können Sie auch MySQL -Fehlerprotokolle anzeigen, die normalerweise weitere Details zu SQL -Fehlern enthält.
Mit der MySQLI_STMT :: $ -IR -ERROR -Eigenschaft können PHP -Entwickler bei der Ausführung von SQL -Abfragen schnell Fehler aufnehmen und finden. Dies ist besonders wichtig für komplexe Abfrageanweisungen. Durch die Kombination eines angemessenen Fehlerbehebung und Debugging -Fähigkeiten kann die Debugging -Effizienz effektiv verbessert und häufige SQL -Fehler vermieden werden.