Pourquoi est-ce que j'obtiens l'erreur « Tentative d'accès au décalage du tableau sur une valeur de type Null » lors de l'interrogation d'une base de données ?

Mary-Kate Olsen
Libérer: 2024-11-11 16:27:03
original
909 Les gens l'ont consulté

Why Do I Get the

Correction de l'erreur « Tentative d'accès au décalage du tableau sur la valeur de type Null »

Lors de la récupération de données d'une base de données, il est essentiel de gérer scénarios dans lesquels aucun enregistrement correspondant n’existe. L'erreur « Essayer d'accéder au décalage du tableau sur une valeur de type null » se produit lorsque la base de données ne parvient pas à trouver une ligne correspondante pour une requête particulière.

Pourquoi cette erreur se produit-elle ?

Les fonctions de récupération de base de données, comme mysqli_fetch_array, renvoient soit une valeur nulle, soit un tableau vide s'il n'y a aucun enregistrement correspondant. Cela peut se produire lorsque la requête est incorrecte, que les données n'existent pas ou que l'ensemble de résultats a été épuisé.

Solution 1 : Vérification de la véracité et de l'existence des clés

Pour résoudre ce problème, vous pouvez vérifier la véracité de la valeur renvoyée et vérifier si la clé spécifique à laquelle vous souhaitez accéder existe. Voici un exemple :

$monday_lectures = "SELECT * from lectures where lecture_time = '11am to 1pm' and lecture_day = 'firday'";
$result_11to1 = mysqli_query($con, $monday_lectures);
$m11to1 = mysqli_fetch_array($result_11to1);
if ($m11to1 && $m11to1["lecture_day"] != '') {
    echo "<td>".$m11to1["lecture_name"]."</td>";
} else {
    echo "<td> no class</td>";
}
Copier après la connexion

Dans cet exemple, nous vérifions d'abord si $m11to1 n'est pas nul, puis vérifions si la clé "lecture_day" existe et n'est pas une chaîne vide.

Solution 2 : Valeurs par défaut dans PDO

Si vous travaillez avec PDO, vous pouvez spécifier une valeur par défaut pour le résultat au cas où aucune ligne correspondante n'est trouvée :

$monday_lectures = $pdo->prepare("SELECT * from lectures where lecture_time = '11am to 1pm' and lecture_day = 'firday'");
$monday_lectures->execute();
$m11to1 = $monday_lectures->fetch();
$lecture = $m11to1["lecture_day"] ?? null;
Copier après la connexion

Cela garantit que $lecture ne sera pas nul, même si aucun enregistrement correspondant n'est trouvé.

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