Maison > base de données > tutoriel mysql > Pourquoi est-ce que j'obtiens l'erreur « Erreur fatale : exception non interceptée 'mysqli_sql_exception' avec le message 'Aucun index utilisé dans la requête/instruction préparée' » dans MySQL ?

Pourquoi est-ce que j'obtiens l'erreur « Erreur fatale : exception non interceptée 'mysqli_sql_exception' avec le message 'Aucun index utilisé dans la requête/instruction préparée' » dans MySQL ?

Patricia Arquette
Libérer: 2025-01-01 12:04:11
original
769 Les gens l'ont consulté

Why Am I Getting the

"Erreur fatale : exception non détectée 'mysqli_sql_exception' avec le message 'Aucun index utilisé dans la requête/instruction préparée'" Expliqué

Introduction

Lors de l'exécution de requêtes de base de données, vous pouvez rencontrer l'erreur « Erreur fatale : exception non interceptée ». 'mysqli_sql_exception' avec le message 'Aucun index utilisé dans la requête/instruction préparée'". Cet article vise à élucider les causes sous-jacentes et à fournir des solutions à cette erreur.

Évaluation du code PHP

$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);
Copier après la connexion

Analyse des erreurs

Le message d'erreur indique qu'un index est manquant dans la requête ou l'instruction préparée. Dans ce cas, la table MySQL "calc" n'a pas d'index sur les colonnes "id" et "name".

Solutions

Ajuster mysqli_report Paramètre

La fonction mysqli_report() peut être utilisée pour contrôler la gravité des avertissements et des erreurs signalés par MySQL. En définissant mysqli_report(MYSQLI_REPORT_OFF) ou mysqli_report(MYSQLI_REPORT_ERROR), vous pouvez désactiver les avertissements et signaler uniquement les erreurs, ce qui évitera l'erreur fatale dans ce cas.

mysqli_report(MYSQLI_REPORT_OFF);
Copier après la connexion

Implémenter la gestion des erreurs

Une autre solution consiste à implémenter la gestion des erreurs à l'aide des blocs try{} et catch(). Cela vous permet de détecter et de gérer les erreurs et les avertissements qui se produisent lors des opérations de base de données.

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";
}
Copier après la connexion

Créer des index sur la table

Pour résoudre le problème d'index sous-jacent, vous devez créez des index sur la table pour optimiser les performances des requêtes.

CREATE INDEX idx_emp_id ON calc (id);
CREATE INDEX idx_emp_name ON calc (name);
Copier après la connexion

En implémentant ces solutions, vous pouvez résoudre l'erreur « Erreur fatale : exception non interceptée 'mysqli_sql_exception' avec le message d'erreur 'Aucun index utilisé dans la requête/instruction préparée'" et améliorez les performances de vos opérations de base de données.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal