Anzeige von Fehlern mit MySQLi-Fehlerfunktionen
MySQLi
ist eine PHP-Funktion, die für den Zugriff auf den MySQL-Datenbankserver verwendet wird. Sie können diese Erweiterung verwenden, wenn Sie MySQL-Version 4.1.13 oder höher haben.
Es gibt verschiedene MySQLi
-Funktionen, mit denen Sie verschiedene Funktionen in PHP ausführen können. In diesem Artikel lernen wir die Fehlerfunktionen von MySQLi
kennen.
Wir werden auch sehen, wie und wo Codebeispiele verwendet werden, und die Ausgaben beobachten. Für dieses Tutorial verwenden wir die MySQL-Version 8.0.27 und die PHP-Version 7.4.1.
PHP MySQLi
Fehlerfunktionen
In diesem Tutorial lernen wir die folgenden PHP MySQLi
-Fehlerfunktionen kennen:
mysqli_error()
mysqli_errno()
mysqli_error_list()
mysqli_connect_error()
mysqli_connect_errno()
Alle diese Funktionen können im objektorientierten Stil und im prozeduralen Stil verwendet werden. Lassen Sie uns beide Syntaxen mit der Funktion mysqli_error()
verstehen.
Syntax der Funktion mysqli_error()
im objektorientierten Stil
string $mysqli->error;
Syntax der Funktion mysqli_error()
im prozeduralen Stil
string mysqli_error ( mysqli $link )
mysqli_error()
Funktion in MySQL
Mit dieser Funktion wird die letzte Fehlerbeschreibung zum letzten Funktionsaufruf (falls vorhanden) ausgegeben. Es wird verwendet, wenn Sie wissen möchten, ob die SQL
-Abfrage einen Fehler enthält oder nicht.
mysqli_error()
gibt die Fehlerbeschreibung und einen leeren String zurück, wenn kein Fehler vorliegt. Siehe folgendes Beispiel.
Beispielcode mit prozeduralem Stil:
<?php
$host = "localhost";
$username = "root";
$password = "";
$database = "person";
$connection = mysqli_connect($host, $username, $password, $database)
or die("Connection Failed");
$sql = "SELECT * FROM teacher";
$result = mysqli_query($connection, $sql);
$error_message = mysqli_error($connection);
if($error_message == ""){
echo "No error related to SQL query.";
}else{
echo "Query Failed: ".$error_message;
}
mysqli_close($connection);
?>
Der oben angegebene Code versucht, die Verbindung mit den Variablen $host
, $username
, $password
, $database
herzustellen und diese Verbindung in der Variablen $connection
zu speichern.
Die mysqli_error()
-Funktion nimmt diese Verbindungsvariable $connection
als Parameter und prüft, ob es einen Fehler gibt, der durch den letzten MySQLi
-Funktionsaufruf verursacht wurde, der hier mysqli_query($connection, $sql)
ist.
Ausgabe:
Ändern Sie nun den Tabellennamen in der SQL
-Abfrage von teacher
auf person
und beobachten Sie die unten angegebene Ausgabe.
Ausgabe:
Wir als Entwickler können leicht nachvollziehen, dass es in der Datenbank person
keine person
-Tabelle gibt (das bedeutet der obige Fehler).
Lassen Sie den Tabellennamen unverändert und ersetzen Sie die Zeile $error_message = mysqli_error($connection);
mit $error_message = $connection->error;
den objektorientierten Stil mit der Fehlerfunktion MySQLi
zu üben und zu verstehen.
mysqli_errno()
Funktion in MySQL
mysqli_errno()
funktioniert genauso wie mysqli_error()
, aber es gibt den Fehlercode anstelle der Fehlerbeschreibung zurück.
Schreiben Sie den folgenden Code zum Üben und Verstehen. Sie haben vielleicht bemerkt, dass wir einen prozeduralen Stil verwenden, um diese Funktion zu üben.
<?php
$host = "localhost";
$username = "root";
$password = "";
$database = "person";
$connection = mysqli_connect($host, $username, $password, $database)
or die("Connection Failed");
$sql = "SELECT * FROM person";
$result = mysqli_query($connection, $sql);
$error_message = mysqli_errno($connection);
if($error_message == ""){
echo "No error related to SQL query.";
}else{
echo "Query Failed: ".$error_message;
}
mysqli_close($connection);
?>
Der oben angegebene Code zeigt die folgende Ausgabe, in der Sie eine Zahl als Fehlercode sehen.
Ausgabe:
Die Frage ist, warum verwenden wir diese Funktion, um nur die Zahlen anzuzeigen? Denn wenn Sie eine benutzerfreundliche Fehlermeldung (benutzerdefinierte Nachricht) drucken möchten, können Sie diesen Fehlercode in if-else
-Anweisungen verwenden.
Siehe den folgenden Code und seine Ausgabe unten.
<?php
$host = "localhost";
$username = "root";
$password = "";
$database = "person";
$connection = mysqli_connect($host, $username, $password, $database)
or die("Connection Failed");
$sql = "SELECT * FROM person";
$result = mysqli_query($connection, $sql);
$error_message = mysqli_errno($connection);
if($error_message == 1146){
echo "You are trying to read the data from a table which doesn't exist in your database "."'".$database."'";
}
mysqli_close($connection);
?>
Ausgabe:
mysqli_error_list()
Funktion in MySQL
Diese Funktion ist sehr nützlich, um den Fehlercode, den SQL-Status und die Fehlerbeschreibung zu kennen, da diese Funktion ein Array zurückgibt, das alle erforderlichen Informationen enthält.
Beispielcode:
<?php
$host = "localhost";
$username = "root";
$password = "";
$database = "person";
$connection = mysqli_connect($host, $username, $password, $database)
or die("Connection Failed");
$sql = "SELECT * FROM person";
$result = mysqli_query($connection, $sql);
print_r(mysqli_error_list($connection));
mysqli_close($connection);
?>
Ausgabe:
mysqli_connect_error()
Funktion in MySQL
mysqli_connect_error()
gibt die Fehlerbeschreibung der letzten Verbindung zurück, falls vorhanden. Obwohl die Funktion die()
auch über die erfolglose Verbindung informiert, gibt mysqli_connect_error()
den Fehler zurück, den wir leicht verstehen können.
Schreiben Sie zuerst den folgenden Code, sehen Sie sich seine Ausgabe an, und dann vergleichen wir ihn mit der Ausgabe von mysqli_connect_error()
.
<?php
$host = "localhost";
$username = "root";
$password = "";
$database = "person";
$connection = mysqli_connect($host, $username, $password, $database)
or die("Connection Failed");
$sql = "SELECT * FROM person";
$result = mysqli_query($connection, $sql);
$error_message = mysqli_error($connection);
if($error_message != ""){
echo "Query Failed: ".$error_message;
}
mysqli_close($connection);
?>
Ausgabe:
Siehe die oben angegebene Ausgabe; Sie können sehen, dass der Fehler, den wir verstehen können, irgendwo in der Mitte liegt.
Stellen Sie sich vor, wenn Sie 2 oder 3 Fehler haben, wäre es nicht einfach, das herauszufinden. Verwenden Sie nun mysqli_connect_error()
und sehen Sie den Unterschied mit dem folgenden Code und der folgenden Ausgabe.
<?php
$host = "localhost";
$username = "newroot";
$password = "";
$database = "person";
$connection = mysqli_connect($host, $username, $password, $database)
or die("Connection Failed: ".mysqli_connect_error());
$sql = "SELECT * FROM teacher";
$result = mysqli_query($connection, $sql);
$error_message = mysqli_error($connection);
if($error_message != ""){
echo "SQL Query Failed: ".$error_message;
}
mysqli_close($connection);
?>
Ausgabe:
Die obige Ausgabe besagt eindeutig, dass es keinen Benutzer namens newroot
gibt, der Ihnen keinen Zugriff auf die Datenbank erlaubt.
mysqli_connect_errno()
Funktion in MySQL
Diese Funktion verhält sich wie mysqli_connect_error()
, zeigt aber statt der Fehlermeldung den Fehlercode an. Wir können diesen Fehlercode verwenden, um benutzerdefinierte Fehlermeldungen zu schreiben.
Beispielcode:
<?php
$host = "localhost";
$username = "newroot";
$password = "";
$database = "person";
$connection = mysqli_connect($host, $username, $password, $database)
or die("Connection Failed: ".mysqli_connect_errno());
$sql = "SELECT * FROM teacher";
$result = mysqli_query($connection, $sql);
$error_message = mysqli_error($connection);
if($error_message != ""){
echo "SQL Query Failed: ".$error_message;
}
mysqli_close($connection);
?>
Ausgabe:
Fazit
Unter Berücksichtigung all der Diskussionen und Beispiele haben wir zwei Hauptkategorien geschlossen. Die erste Kategorie zeigt die Fehler zu SQL-Abfragen und die andere zu Datenbankverbindungen.
Abhängig von den Projektanforderungen können wir die Fehlermeldung oder den Fehlercode in jeder Kategorie drucken.