Du missförstår i grunden hur dessa saker fungerar.
"Arrayen" i mysql_fetch_array
är inte en array av alla poster, utan en array av data i den aktuella posten.
I ditt fall hämtar du bara ett enda fält, så arrayen kommer bara att innehålla ett enda element (dvs $row[0]
), men principen är densamma -- det är en samling av den enda posten som du just har läst.
Endast data för den aktuella posten finns i arrayen vid ett tillfälle. Det är vad while
loop är för; det går tillbaka alla laddningar varje post efter varandra.
Om du vill skapa en array som innehåller all data, måste du göra det så här:
$fullData = array()
while($row = mysql_fetch_array($tableIndex) ){
$fullData[] = $row[0];
}
Det kommer att lägga all data som du läser i en enda stor array, vilket är vad du förväntar dig. Nu kan du göra vad du ville göra i frågan:
echo $fullData[0].'<br>';
echo $fullData[1].'<br>';
echo $fullData[2].'<br>';
Hoppas det hjälper.
Det är värt att påpeka här att mysql_xxx()
familj av funktioner avskrivs och anses föråldrade. Om du bara lär dig PHP (vilket verkar vara fallet), rekommenderar jag starkt att du slutar lära dig dessa funktioner och lär dig PDO
bibliotek istället. Den är modernare och har många funktioner än mysql
funktioner inte kan tillhandahålla. Dessutom kommer framtida versioner av PHP att ta bort mysql
fungerar helt, så du måste byta någon gång – det kan lika gärna vara nu, medan du fortfarande lär dig.
Dessutom (för att hålla saker relevanta för frågan), har PDO-biblioteket en funktion som faktiskt gör det du letar efter i en enda funktion:PDO::fetchAll()
. Att använda den här metoden innebär att du kan hämta all data till en enda stor array på en rad utan att behöva göra en while-loop. Koden skulle se ut ungefär så här:
$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();
$result = $sth->fetchAll();
(exempel taget från PHP-manualen för PDO::fetchAll
)