Pourquoi est-ce que j'accède uniquement à la première valeur de mon jeu de résultats MySQLi ?

Susan Sarandon
Libérer: 2024-11-19 11:33:02
original
804 Les gens l'ont consulté

Why Am I Only Accessing the First Value in My MySQLi Result Set?

Itération sur les ensembles de résultats dans MySQLi

Lorsque vous travaillez avec des ensembles de résultats dans MySQLi, vous pouvez rencontrer un problème où seule la première valeur est accessible lors de l'itération. Cela résulte généralement de l'utilisation de fetch_array() et d'une mauvaise compréhension de son comportement.

Comportement par défaut de fetch_array()

Par défaut, fetch_array() renvoie un tableau avec les deux clés indexées et associatives, appelées MYSQLI_BOTH. Pour spécifier un jeu de résultats avec uniquement des clés indexées ou associatives, utilisez respectivement MYSQLI_NUM ou MYSQLI_ASSOC.

Alternatives à fetch_array()

Plutôt que de compter sur fetch_array(), considérer plus efficace et concis alternatives :

  • Tableaux associatifs (MYSQLI_ASSOC) : Accédez aux valeurs en utilisant le nom de la colonne comme clé :
while ($row = $output->fetch_array(MYSQLI_ASSOC)) {
    echo $row['uid'];
}
Copier après la connexion
  • Tableaux indexés (MYSQLI_NUM) : Accédez aux valeurs par index :
while ($row = $output->fetch_array(MYSQLI_NUM)) {
    echo $row[0];
}
Copier après la connexion
  • Itération orientée objet : Itération sur l'ensemble de résultats en tant qu'objet itérable, en omettant le besoin de fetch_array() :
foreach ($output as $row) {
    echo $row['uid'];
}
Copier après la connexion

Dépannage Itération

L'utilisation de $i pour incrémenter les clés indexées ne convient pas aux ensembles de résultats avec des clés associatives. Par exemple, l'ensemble de résultats peut avoir des valeurs dans la structure suivante :

[
    0 => [0 => 1, 'uid' => 1],
    1 => [0 => 2, 'uid' => 2],
    2 => [0 => 3, 'uid' => 3]...
]
Copier après la connexion

Dans ce scénario, $row[1] n'existera pas dans les itérations suivantes, ce qui entraînera le problème.

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