Mysql
 sql >> Base de données >  >> RDS >> Mysql

mysql_fetch_array et boucle while en php

Vous ne comprenez pas fondamentalement comment ces choses fonctionnent.

Le "tableau" dans mysql_fetch_array n'est pas un tableau de tous les enregistrements, mais un tableau des données de l'enregistrement en cours.

Dans votre cas, vous ne récupérez qu'un seul champ, donc le tableau ne contiendra qu'un seul élément (c'est-à-dire $row[0] ), mais le principe est le même :c'est un tableau de l'enregistrement unique que vous venez de lire.

Seules les données de l'enregistrement en cours se trouvent dans le tableau à tout moment. C'est ce que le while la boucle est pour ; il remonte tous les chargements de chaque enregistrement l'un après l'autre.

Si vous souhaitez créer un tableau contenant toutes les données, vous devez le faire comme ceci :

$fullData = array()
while($row = mysql_fetch_array($tableIndex) ){
    $fullData[] = $row[0];
}

Cela mettra toutes les données que vous lisez dans un seul grand tableau, ce que vous attendez. Vous pouvez maintenant faire ce que vous vouliez faire dans la question :

echo $fullData[0].'<br>';
echo $fullData[1].'<br>';
echo $fullData[2].'<br>';

J'espère que ça aide.

Il convient de souligner ici que le mysql_xxx() famille de fonctions sont obsolètes et considérées comme obsolètes. Si vous venez d'apprendre PHP (ce qui semble être le cas), je vous recommande fortement d'arrêter d'apprendre ces fonctions et d'apprendre le PDO bibliothèque à la place. Il est plus moderne et possède beaucoup de fonctionnalités que le mysql les fonctions ne peuvent pas fournir. De plus, les futures versions de PHP supprimeront le mysql fonctionne entièrement, vous devrez donc changer à un moment donné - cela peut aussi bien être maintenant, pendant que vous apprenez encore.

De plus (pour que les choses restent pertinentes à la question), la bibliothèque PDO a une fonctionnalité qui fait en fait ce que vous recherchez dans une seule fonction :PDO::fetchAll() . L'utilisation de cette méthode signifie que vous pouvez récupère toutes les données dans un seul grand tableau sur une seule ligne sans avoir besoin de faire une boucle while. Le code ressemblerait un peu à ceci :

$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();
$result = $sth->fetchAll();

(exemple tiré du manuel PHP pour PDO::fetchAll )