PrinzMaisle: mysql/php: Fehlernummer abfragen

Beitrag lesen

Hi,

Das scheint unter php 8.1 nicht mehr zu funktionieren.

nicht ganz klar was genau nicht mehr funktioniert

Hat sich denn da irgendwas geändert, bzw, wie bekomme ich die Fehlernummer denn unter php 8.1 raus?

In PHP 8.1 hat sich das standardmäßige Fehlerbehandlungsverhalten der MySQLi-Erweiterung von der Stummschaltung von Fehlern dahingehend geändert, dass bei Fehlern eine Ausnahme ausgelöst wird.

Vor PHP 8.1 bestand der standardmäßige Fehlerberichtsmodus in MySQLi darin, die Fehler stumm zu schalten, was oft zu Code führte, der nicht der richtigen Ausnahme-/Fehlerbehandlung folgte. Ab PHP 8.1 und höher besteht der Standardmodus für die Fehlerberichterstattung darin, eine Ausnahme bei Fehlern auszulösen.

MYSQLI_REPORT_OFF wurde zu MYSQLI_REPORT_ERROR|MYSQLI_REPORT_STRICT

Also, wenn dies bei dir hineinspielt, könnte ein mysqli_report(MYSQLI_REPORT_OFF); ODER

$driver = new mysqli_driver();
$driver->report_mode = MYSQLI_REPORT_OFF;

helfen.

Aber die Verwendung von Ausnahmen (Standardverhalten in PHP 8.1) wird empfohlen, da dies Fehler hervorbringt, die unbemerkt bleiben könnten. Um den Verlust sensibler Daten zu verhindern, konfiguriere den INI-Wert display_errors auf off. Bei MYSQLI_REPORT_OFF muss der Aufrufer die Fehler behandeln, indem er den Rückgabewert von mysqli_*-Funktionsaufrufen prüft oder indem er die Eigenschaft $mysqli->error prüft.

mysqli_connect_errno() - Gibt den Fehlercode vom letzten Verbindungsaufruf zurück mysqli_connect_error() - Gibt eine Beschreibung des letzten Verbindungsfehlers zurück mysqli_error() - Gibt eine String-Beschreibung des letzten Fehlers zurück

mysqli_sqlstate() - Gibt den SQLSTATE-Fehler aus der vorherigen MySQL-Operation zurück

Hoffe es hilft