Maison  >  Article  >  développement back-end  >  Pourquoi est-ce que j'accède uniquement à la première valeur de mon jeu de résultats MySQLi ?

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

Susan Sarandon
Susan Sarandonoriginal
2024-11-19 11:33:02798parcourir

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'];
}
  • Tableaux indexés (MYSQLI_NUM) : Accédez aux valeurs par index :
while ($row = $output->fetch_array(MYSQLI_NUM)) {
    echo $row[0];
}
  • 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'];
}

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]...
]

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!

Déclaration:
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