Essayer d'accéder au décalage de tableau d'une valeur de type null dans un tableau rempli à partir d'un jeu de résultats MySQLi
P粉046387133
P粉046387133 2024-01-02 18:45:44
0
2
562

J'ai finalement réussi à mettre à jour mon installation PHP de 7.2 à 7.4 (en prévoyant de mettre à jour directement vers la version actuelle, mais en le faisant par étapes) et j'ai eu une erreur étrange lorsque j'ai exécuté le script existant :

Message : Tentative d'accès au décalage du tableau sur une valeur de type null

La ligne qui apparaît remplit simplement un tableau à partir d'un simple jeu de résultats MySQL.

for($i = 0; $resultArray[$i] = mysqli_fetch_row($result)[0]; $i++) ;

Le script fonctionne toujours bien, mais je n'aime tout simplement pas les erreurs. Je ne comprends pas pourquoi cela ne va pas et j'ai cherché pendant des heures en vain. Pourquoi cette erreur se produit-elle ? Existe-t-il un moyen d'effectuer la même opération sans erreur ?

P粉046387133
P粉046387133

répondre à tous(2)
P粉076987386

Selon la documentation, une fois la fin de l'ensemble de résultats atteinte, mysqli_fetch_row 将返回 null.

Vous pouvez utiliser des foreachloops. Je ne le recommande pas, mais c'est une solution possible.

foreach ($result->fetch_all() as [0 => $resultArray[]]); // no body needed

Vous n’avez vraiment pas besoin d’utiliser cet appareil étrange. Vous pouvez utiliser array_column() pour des opérations plus simples.

$resultArray = array_column($result->fetch_all(), 0);
P粉681400307

mysqli_fetch_row 将在某个时刻返回 null (d'après la documentation, il fait toujours cela lorsqu'il manque de lignes à récupérer). Mais vous ne l'avez pas vérifié avant d'essayer de lire son 0ème index, vous obtenez donc l'erreur.

De nombreuses personnes utilisent ce style pour récupérer des lignes :

while ($row = mysqli_fetch_row($result)) { 
  $resultArray[] = $row[0]; 
}

Cela évitera de tels problèmes. C’est également ainsi que vous le voyez souvent dans les exemples et la documentation.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal