Zásadně nechápete, jak tyto věci fungují.
"Pole" v mysql_fetch_array
není pole všech záznamů, ale pole dat v aktuálním záznamu.
Ve vašem případě načítáte pouze jedno pole, takže pole bude obsahovat pouze jeden prvek (tj. $row[0]
), ale princip je stejný – je to pole jednoho záznamu, který jste právě přečetli.
V poli jsou v každém okamžiku pouze data pro aktuální záznam. To je to, co while
smyčka je pro; vrací zpět všechna načtení každého záznamu jeden po druhém.
Pokud chcete vytvořit pole, které obsahuje všechna data, musíte to udělat takto:
$fullData = array()
while($row = mysql_fetch_array($tableIndex) ){
$fullData[] = $row[0];
}
To dá všechna data, která čtete, do jednoho velkého pole, což je to, co očekáváte. Nyní můžete udělat to, co jste chtěli udělat v otázce:
echo $fullData[0].'<br>';
echo $fullData[1].'<br>';
echo $fullData[2].'<br>';
Doufám, že to pomůže.
Zde stojí za to zdůraznit, že mysql_xxx()
rodina funkcí jsou zastaralé a považovány za zastaralé. Pokud se teprve učíte PHP (což se zdá být ten případ), důrazně doporučuji, abyste se přestali učit tyto funkce a naučili se PDO
místo toho knihovna. Je modernější a má spoustu funkcí než mysql
funkce nemohou poskytnout. Kromě toho budoucí verze PHP odstraní mysql
funguje úplně, takže budete muset v určitém okamžiku přepnout - může to být i nyní, když se stále učíte.
Knihovna PDO má také (abychom udrželi věci relevantní k otázce) funkci, která ve skutečnosti dělá to, co hledáte, v jediné funkci:PDO::fetchAll()
. Použití této metody znamená, že můžete načíst všechna data do jednoho velkého pole na jednom řádku bez nutnosti dělat smyčku while. Kód by vypadal trochu takto:
$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();
$result = $sth->fetchAll();
(příklad převzat z manuálu PHP pro PDO::fetchAll
)