Einführung
Beim Ausführen von Datenbankabfragen kann der Fehler „Schwerwiegender Fehler: Nicht erfasste Ausnahme“ auftreten „mysqli_sql_Exception“ mit der Meldung „Kein Index in Abfrage/vorbereiteter Anweisung verwendet“. Ziel dieses Artikels ist es, die zugrunde liegenden Ursachen aufzuklären und Lösungen für diesen Fehler bereitzustellen.
PHP-Codebewertung
$mysql = new mysqli(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME) or die('There was a problem connecting to the database'); if (mysqli_connect_errno()) { printf("DB error: %s", mysqli_connect_error()); exit(); } $get_emp_list = $mysql->prepare("SELECT id, name FROM calc"); if(!$get_emp_list){ echo "prepare failed\n"; echo "error: ", $mysql->error, "\n"; return; } $get_emp_list->execute(); $get_emp_list->bind_result($id, $emp_list);
Fehleranalyse
Die Fehlermeldung weist darauf hin, dass in der Abfrage oder vorbereiteten Anweisung ein Index fehlt. In diesem Fall hat die MySQL-Tabelle „calc“ keinen Index für die Spalten „id“ und „name“.
Lösungen
Mysqli_report anpassen Einstellung
Die Funktion mysqli_report() kann verwendet werden, um den Schweregrad der von gemeldeten Warnungen und Fehler zu steuern MySQL. Durch Festlegen von mysqli_report(MYSQLI_REPORT_OFF) oder mysqli_report(MYSQLI_REPORT_ERROR) können Sie Warnungen deaktivieren und nur Fehler melden, wodurch der schwerwiegende Fehler in diesem Fall vermieden wird.
mysqli_report(MYSQLI_REPORT_OFF);
Fehlerbehandlung implementieren
Eine andere Lösung besteht darin, die Fehlerbehandlung mit try{} und Catch() zu implementieren. Blöcke. Dadurch können Sie Fehler und Warnungen erkennen und behandeln, die während Datenbankvorgängen auftreten.
try { $get_emp_list = $mysql->prepare("SELECT id, name FROM calc"); if(!$get_emp_list){ throw new Exception("Prepare failed"); } $get_emp_list->execute(); $get_emp_list->bind_result($id, $emp_list); } catch (Exception $e) { echo "Error occurred: " . $e->getMessage() . "\n"; }
Indizes für die Tabelle erstellen
Um das zugrunde liegende Indexproblem zu beheben, sollten Sie Folgendes tun Erstellen Sie Indizes für die Tabelle, um die Abfrageleistung zu optimieren.
CREATE INDEX idx_emp_id ON calc (id); CREATE INDEX idx_emp_name ON calc (name);
Durch die Implementierung dieser Lösungen können Sie den „Schwerwiegenden Fehler: Nicht erfasste Ausnahme“ beheben „mysqli_sql_Exception“ mit der Meldung „Kein Index in Abfrage/vorbereiteter Anweisung verwendet““-Fehler und verbessern Sie die Leistung Ihrer Datenbankoperationen.
Das obige ist der detaillierte Inhalt vonWarum erhalte ich in MySQL den Fehler „Schwerwiegender Fehler: Nicht erfasste Ausnahme ‚mysqli_sql_Exception' mit der Meldung ‚Kein Index in Abfrage/vorbereiteter Anweisung verwendet''?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!