Du misforstår grundlæggende, hvordan disse ting fungerer.
"Arrayet" i mysql_fetch_array
er ikke en matrix af alle poster, men en matrix af data i den aktuelle post.
I dit tilfælde henter du kun et enkelt felt, så arrayet vil kun indeholde et enkelt element (dvs. $row[0]
), men princippet er det samme -- det er en række af den enkelte post, som du lige har læst.
Kun dataene for den aktuelle post er i arrayet på ethvert tidspunkt. Det er hvad while
loop er for; det går tilbage enhver belastning hver post efter den anden.
Hvis du vil oprette et array, der indeholder alle data, skal du gøre det sådan her:
$fullData = array()
while($row = mysql_fetch_array($tableIndex) ){
$fullData[] = $row[0];
}
Det vil lægge alle de data, du læser, i et enkelt stort array, hvilket er, hvad du forventer. Nu kan du gøre, hvad du ville gøre i spørgsmålet:
echo $fullData[0].'<br>';
echo $fullData[1].'<br>';
echo $fullData[2].'<br>';
Håber det hjælper.
Det er værd at påpege her, at mysql_xxx()
familie af funktioner afvises og anses for at være forældede. Hvis du bare lærer PHP (hvilket ser ud til at være tilfældet), anbefaler jeg kraftigt, at du stopper med at lære disse funktioner og lærer PDO
bibliotek i stedet for. Det er mere moderne og har en masse funktioner end mysql
funktioner ikke kan levere. Derudover vil fremtidige versioner af PHP fjerne mysql
fungerer fuldstændigt, så du bliver nødt til at skifte på et tidspunkt – det kan lige så godt være nu, mens du stadig er ved at lære.
Også (for at holde tingene relevante for spørgsmålet) har PDO-biblioteket en funktion, der faktisk gør det, du leder efter i en enkelt funktion:PDO::fetchAll()
. Brug af denne metode betyder, at du kan hent alle data i et enkelt stort array på én linje uden behov for at lave en while-løkke. Koden ville se lidt sådan ud:
$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();
$result = $sth->fetchAll();
(eksempel taget fra PHP-manualen til PDO::fetchAll
)