Die Verwendung von MySQL -Datenbanken ist bei der Entwicklung von PHP -Anwendungen ein gängiger Betrieb. In PHP verwenden wir häufig die MySQLI -Klasse, um mit der MySQL -Datenbank zu interagieren. Mit MySQLI können wir Datenbankabfragen problemlos ausführen, Ergebnisse erzielen und andere Datenbankvorgänge ausführen. Wenn wir jedoch einen Datenbankmanipulationscode schreiben, können wir einige Details ignorieren, was dazu führt, dass der Code in bestimmten Situationen schief geht.
Ein häufiges Problem besteht darin, dass vor dem Zugriff auf die Eigenschaft von MySQLI :: $ errno vergessen, ob die Datenbankverbindung erfolgreich ist. Schauen wir uns an, welche Probleme verursachen werden, wenn die Verbindung nicht erfolgreich überprüft wird.
Mysqli :: $ errno ist eine sehr nützliche Eigenschaft bei der Durchführung von Datenbankvorgängen mit MySQLI . Es repräsentiert den Fehlercode für den vorherigen Datenbankvorgang. Wenn Sie Vorgänge wie Abfrage oder Einfügung ausführen, gibt Erno einen Ganzzahlwert zurück, der den Fehlertyp angibt. Wenn kein Fehler auftritt, beträgt sein Wert 0.
Zum Beispiel:
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_error) {
echo "Verbindung ist fehlgeschlagen: " . $mysqli->connect_error;
exit();
}
$query = "SELECT * FROM table";
$result = $mysqli->query($query);
if ($mysqli->errno) {
echo "Abfragefehler: " . $mysqli->errno . " - " . $mysqli->error;
}
Im obigen Beispiel wird $ mysqli-> errno verwendet, um den Fehlercode zu erhalten und ihn zu verarbeiten.
Normalerweise prüfen wir, ob die Datenbankverbindung vor jeder Datenbankoperation erfolgreich ist, z. B. nach dem Attribut connect_error . Wenn die Datenbankverbindung fehlschlägt, aber wir den Verbindungsstatus nicht überprüfen und den Abfragevorgang direkt durchführen, wird dies zu schwerwiegenden Fehlern verursacht.
Betrachten Sie den folgenden Code:
$mysqli = new mysqli("localhost", "user", "password", "database");
$query = "SELECT * FROM table";
$result = $mysqli->query($query);
if ($mysqli->errno) {
echo "Abfragefehler: " . $mysqli->errno . " - " . $mysqli->error;
}
In diesem Beispiel stellen wir nicht fest, ob MySQLI erfolgreich mit der Datenbank verbunden ist. Wenn die Datenbankverbindung fehlschlägt, wird $ mysqli-> query () nicht ausgeführt, und $ mySQLI-> errno enthält nicht die korrekte Fehlermeldung, die möglicherweise 0 oder andere nicht verwandte Werte zurückgibt, was dazu führt, dass die Unfähigkeit, das Problem genau zu finden.
Insbesondere sind die folgenden Probleme, die auftreten können:
Wenn die Verbindung vor der Ausführung der Abfrage nicht auf Erfolg geprüft wird, kann das Programm weiter ausgeführt werden, was zu einem falschen Errno -Wert führt. Wenn die Datenbankverbindung beispielsweise fehlschlägt, spiegelt der Fehlercode nicht die tatsächliche Situation des Verbindungsfehlers wider, sondern den Fehler des Abfragebetriebs, der den Debugging -Prozess des Entwicklers verschleiert.
Wenn wir nicht überprüfen, wann die Verbindung fehlschlägt, gibt das Programm möglicherweise keine klare Fehlermeldung, so dass wir das Problem nicht schnell entdecken können. Beispielsweise kann ein Verbindungsfehler ignoriert werden und das Programm wird weiterhin wie eine normale Abfrage ausgeführt, bis andere irrelevante Fehler auftreten. In dieser Situation verlieren sich Entwickler oft in einer Reihe von Kettenreaktionen, was es schwierig macht, die wirkliche Quelle des Fehlers zu finden.
In einigen Fällen kann die Fehlermeldung, wenn der Verbindungsstatus nicht zuerst überprüft wird, vertrauliche Informationen in Bezug auf die Datenbank angegeben. Beispielsweise kann die Fehlermeldung Datenbankverbindungszeichenfolgen oder andere sensible Daten enthalten. Durch die Fehlerhandhabungsmethode kann ein Angreifer die Möglichkeit haben, Informationen über die Systemstruktur zu erhalten, die sogar zur Entstehung von Sicherheitslücken führen können.
Um die oben genannten Probleme zu vermeiden, sollten wir überprüfen, ob die Verbindung erfolgreich ist, bevor Datenbankvorgänge durchgeführt werden. Hier ist ein korrekter Code -Beispiel:
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_error) {
die("Verbindung ist fehlgeschlagen: " . $mysqli->connect_error);
}
$query = "SELECT * FROM table";
$result = $mysqli->query($query);
if ($mysqli->errno) {
echo "Abfragefehler: " . $mysqli->errno . " - " . $mysqli->error;
}
In diesem Code prüfen wir zunächst, ob das Connect_error leer ist, um festzustellen, ob die Datenbankverbindung erfolgreich ist. Wenn die Verbindung fehlschlägt, endet das Programm frühzeitig und eine Fehlermeldung wird angezeigt. Wenn die Verbindung erfolgreich ist, wird der Abfragevorgang fortgesetzt und bei der Abfrage $ MySQLI-> Errno korrekt verwendet, um auf Fehler zu prüfen.
Vergessen zu überprüfen, ob die Verbindung erfolgreich ist, bevor ein Datenbankvorgang durchgeführt wird, kann zu mehreren Problemen wie falschen Fehlercodes, versteckten Verbindungsfehlern und sogar potenziellen Sicherheitsproblemen führen. Um diese Probleme zu vermeiden, bestätigen Sie zunächst, dass die Verbindung vor jedem Datenbankbetrieb erfolgreich ist. Dadurch wird das Programm robuster und Fehlerinformationen genauer und verbessert gleichzeitig die Wartbarkeit und Sicherheit des Codes.
Ich hoffe, dieser Artikel hilft Ihnen zu verstehen, warum Sie zuerst bestimmen müssen, ob die Verbindung erfolgreich ist, bevor Sie MySQLI :: $ errno verwenden, und Probleme zu vermeiden, die durch das Ignorieren dieses Details verursacht werden.