Bei der Verwendung von PHP zum Betrieb von MySQL -Datenbanken können vorbereitete Anweisungen die SQL -Injektion effektiv verhindern und die Sicherheits- und Code -Wartbarkeit verbessern. Während des Schreibens und Ausführens von Vorverarbeitungsanweisungen wie Syntaxfehler, Parameterbindungsfehler oder Ausführungsfehler können jedoch verschiedene Fehler auftreten.
Um diese Probleme schnell zu finden, ist MySQLI_STMT :: $ ERROR ein sehr nützliches Debugging -Tool. Es ist eine Eigenschaft in der Klasse MySQLI_STMT . Es kann spezifische Fehlerinformationen zurückgeben, wenn die Ausführungsanweisung fehlschlägt, und dabei den Entwicklern dabei hilft, das Problem schnell zu finden.
Hier ist ein grundlegendes Beispiel mit MySQLI_STMT :: $ ERROR :
<?php
$mysqli = new mysqli("localhost", "db_user", "db_pass", "test_db");
if ($mysqli->connect_errno) {
die("Verbindung ist fehlgeschlagen: " . $mysqli->connect_error);
}
$sql = "INSERT INTO users (username, email) VALUES (?, ?)";
$stmt = $mysqli->prepare($sql);
if (!$stmt) {
die("Die Vorverarbeitung schlug fehl: " . $mysqli->error);
}
// Die Parameterbindung fälschlicherweise geschrieben:Angenommen, zwei Parameter sollten gebunden sein,Nur einer ist hier gebunden
$stmt->bind_param("s", $username);
$username = "alice";
$email = "[email protected]";
if (!$stmt->execute()) {
// verwenden mysqli_stmt::$error Detaillierter Fehler ausgeben
echo "Ausführung fehlgeschlagen: " . $stmt->error;
}
$stmt->close();
$mysqli->close();
?>
Die Ausgabe kann ähnlich sein wie mit:
Ausführung fehlgeschlagen: Number of variables doesn't match number of parameters in prepared statement
Diese Fehleraufforderung weist deutlich auf das Problem der Nichtübereinstimmung in der Anzahl der Parameter hin.
Sie können diese Eigenschaft zum Debuggen in den folgenden Situationen verwenden:
Wenn die Erstellung der Vorverarbeitungsanweisung fehlschlägt <br> Verwenden Sie $ MySQLI-> Fehler , um Fehlerinformationen zu erhalten.
Wenn die Parameterbindung fehlschlägt oder eine Zahlenfehlanpassung
Bind_param () selbst meldet keinen Fehler, aber wenn die Anzahl der Parameter falsch ist, fordert $ stmt-> Fehler beim Ausführen auf.
Wenn die Ausführung fehlschlägt (wenn eindeutige Einschränkungen verletzt werden)
Wenn Sie beispielsweise versuchen, eine doppelte E-Mail einzufügen, gibt $ STMT-> Fehler zurück
Tipps für "doppelte Eingabe" [email protected] "für Schlüssel" E -Mail "" .
Sie können Fehlerinformationen auch für die anschließende Fehlerbehebung auf das Protokoll protokollieren:
if (!$stmt->execute()) {
error_log("Vorverarbeitungsausführungsfehler: " . $stmt->error);
}
Dies kann vermeiden, dass Benutzer in einer Produktionsumgebung Fehler aufzeigen und den Entwicklern die Fehlerbehebung erleichtern.
Verlassen Sie sich nicht einfach auf Rückgabe falsch , sondern sehen Sie sich die Details in Kombination mit dem Fehlerattribut an.
Die Entwicklungsphase kann direkt Fehler ausgeben. Protokolle sollten in der Produktionsumgebung aufgezeichnet werden.
Mit Errno werden Sie Fehlercodes für detailliertere Urteile abrufen.
MySQLI_STMT :: $ ERROR ist ein sehr praktisches Instrument bei der Debuggierung von Vorverarbeitungsanweisungen. Dadurch können Sie schnell wissen, warum die Aussage fehlschlägt, wodurch die Entwicklungseffizienz beschleunigt und die Fehlerbehebung verkürzt wird.
Während des Entwicklungsprozesses macht die Verwendung dieses Attributs rational Ihre Datenbankinteraktion robuster und zuverlässiger.