Heim >Datenbank >MySQL-Tutorial >Warum erhalte ich in MySQL den Fehler „Schwerwiegender Fehler: Nicht erfasste Ausnahme ‚mysqli_sql_Exception' mit der Meldung ‚Kein Index in Abfrage/vorbereiteter Anweisung verwendet''?

Warum erhalte ich in MySQL den Fehler „Schwerwiegender Fehler: Nicht erfasste Ausnahme ‚mysqli_sql_Exception' mit der Meldung ‚Kein Index in Abfrage/vorbereiteter Anweisung verwendet''?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-01 12:04:11772Durchsuche

Why Am I Getting the

"Schwerwiegender Fehler: Nicht abgefangene Ausnahme 'mysqli_sql_Exception' mit Meldung 'Kein Index in Abfrage/vorbereiteter Anweisung verwendet'" Erklärt

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn