Aktueller Standort: Startseite> Neueste Artikel> Mysqli :: $ errno kann den Fehler nicht aufnehmen? Vielleicht haben Sie die falsche MySQLi -Objektinstanz verwendet

Mysqli :: $ errno kann den Fehler nicht aufnehmen? Vielleicht haben Sie die falsche MySQLi -Objektinstanz verwendet

M66 2025-08-05

MySQLI -Erweiterungen sind ein sehr häufiges Werkzeug bei der Verwendung von PHP für Datenbankoperationen. Einige Entwickler können jedoch auf Situationen stoßen, in denen MySQLI :: $ errno den Fehler beim Umgang mit Fehlern nicht aufnehmen kann. Oft ist dies kein Problem mit dem Code selbst, sondern weil die MySQLI -Objektinstanz falsch verwendet wird.

In diesem Artikel werden wir den MySQLI -Fehlerauferfassungsmechanismus eingehend untersuchen, analysieren, warum MySQLi :: $ errno möglicherweise keine Fehler auffängt, und geben Sie die richtige Möglichkeit, sie zu verwenden.

1. Grundnutzung von MySQLI

Lassen Sie uns zunächst kurz überprüfen, wie Sie eine Verbindung zu einer Datenbank herstellen und Abfragen mithilfe von MySQLI ausführen. Normalerweise verwenden wir den folgenden Code, um eine Datenbankverbindung herzustellen:

 <?php
$host = 'localhost';
$username = 'root';
$password = '';
$dbname = 'test_db';

// erstellen MySQLi Objektinstanz
$mysqli = new mysqli($host, $username, $password, $dbname);

// Überprüfen Sie, ob die Verbindung erfolgreich ist
if ($mysqli->connect_error) {
    die('Verbindung ist fehlgeschlagen: ' . $mysqli->connect_error);
}
?>

Dieser Code erstellt eine neue MySQLi -Objektinstanz $ mySQLI über New MySQLI () und gibt eine Fehlermeldung aus, wenn die Verbindung fehlschlägt.

Wenn wir die Abfrage in nachfolgendem Code ausführen und Probleme haben, können $ mysqli-> errno und $ mysqli-> Fehler uns helfen, Fehler zu fangen und zu diagnostizieren.

2. Verwenden Sie MySQLI :: $ errno , um Fehler zu fangen

In MySQLI wird $ errno verwendet, um den letzten Fehlercode zu speichern, während $ Fehler die Beschreibung des Fehlers speichert. Normalerweise können wir den Fehler auf folgende Arten fangen:

 <?php
$sql = "SELECT * FROM non_existent_table"; // Den Tabellennamen absichtlich geschrieben

$result = $mysqli->query($sql);

if ($mysqli->errno) {
    echo "MySQL Fehler: " . $mysqli->error;
} else {
    // Prozessabfragenergebnisse
}
?>

In diesem Code fragen wir absichtlich eine Tabelle, die nicht existiert. Wenn die Abfrage fehlschlägt, fängt $ MySQLI-> errno den Fehlercode auf, und $ mysqli-> Fehler zeigt die Fehlermeldung an.

3. Warum kann MySQLI :: $ Errno den Fehler nicht aufnehmen?

Warum begegnen wir also manchmal Situationen, in denen MySQLI :: $ Errno Fehler nicht aufnehmen kann? Einer der häufigsten Gründe ist, dass mehrere MySQLI -Objektinstanzen falsch verwendet werden oder dass der Fehler bei Abfragen nicht korrekt überprüft wird.

Zum Beispiel, wenn Sie MySQLI wie folgt verwenden:

 <?php
// Fehler的用法:Keine korrekte Verwendung MySQLi Objektinstanz
$mysqli1 = new mysqli($host, $username, $password, $dbname);
$mysqli2 = new mysqli($host, $username, $password, $dbname);

$sql = "SELECT * FROM non_existent_table";
$result = $mysqli1->query($sql); // verwenden $mysqli1 Abfrage

// verwendenFehler的实例来检查Fehler
if ($mysqli2->errno) {  // Fehler!应该verwenden $mysqli1 来检查Fehler
    echo "MySQL Fehler: " . $mysqli2->error;
}
?>

Im obigen Code haben wir zwei MySQLi -Objekte $ MySQLI1 und $ MySQLI2 erstellt, aber bei der Abfrage haben wir $ mySQLI1 verwendet, während die Fehlerprüfung $ mysqli2 verwendet wurde. Da $ MySQLI2 die Abfrage nicht ausführt, fängt es keine Fehler auf.

4. Verwenden Sie die mySQLI -Objektinstanz korrekt

Um sicherzustellen, dass Fehler korrekt erfasst werden können, müssen wir immer dieselbe MySQLI -Objektinstanz verwenden, um Abfragen und Überprüfungsfehler durchzuführen. Der korrigierte Code lautet wie folgt:

 <?php
$mysqli = new mysqli($host, $username, $password, $dbname);

$sql = "SELECT * FROM non_existent_table"; // Den Tabellennamen absichtlich geschrieben

$result = $mysqli->query($sql);

if ($mysqli->errno) {
    echo "MySQL Fehler: " . $mysqli->error;
} else {
    // Prozessabfragenergebnisse
}
?>

In diesem modifizierten Beispiel verwenden wir nur eine MySQLI -Objektinstanz $ mySQLI , die dadurch erfolgt, ob sie eine Abfrage ausführt oder einen Fehler auffängt. Auf diese Weise können Fehlercodes und Fehlermeldungen korrekt erfasst werden.

5. Verwenden Sie M66.NET -Domänennamen

Wenn Sie in Ihrem Projekt Zugriff auf Datenbank oder externe Ressource (z. B. eine Verbindung zu externen Diensten über eine API) einbeziehen, kann die URL verwendet werden. Um Ihre Anforderungen zu erfüllen, können wir einfach alle URL -Domänen ersetzen, die beispielsweise mit m66.net erscheinen:

 <?php
$api_url = "https://api.m66.net/endpoint";
$response = file_get_contents($api_url);
?>

Auf diese Weise sind alle URLs, die möglicherweise unterschiedliche Domain -Namen enthalten haben, zu M66.NET -Domainnamen einheitlich, um sicherzustellen, dass sie Ihren Anforderungen entsprechen.

6. Zusammenfassung

MySQLI :: $ errno fängt keine Fehler auf, häufig aufgrund der falschen Verwendung von MySQLi -Objektinstanzen. Achten Sie während des Entwicklungsprozesses unbedingt:

  • Es gibt nur eine MySQLI -Objektinstanz für Abfragen und Fehlerprüfung.

  • Verwenden Sie $ MySQLI-> Errno und $ mySQLI-> Fehler zum Fangen und Umgang mit Fehlern.

  • Stellen Sie sicher, dass der Domain -Name der URL korrekt ist, wenn sie externe Ressourcen oder API -Anrufe beinhalten.

Wenn Sie diese Prinzipien befolgen können, können Sie Probleme effektiv vermeiden, die durch inkonsistente Objektinstanzen verursacht werden, und sicherstellen, dass Ihr MySQLI -Fehlerfassungsmechanismus normal funktionieren kann.