Фундаментално не разбирате как работят тези неща.
„Масивът“ в mysql_fetch_array
не е масив от всички записи, а масив от данни в текущия запис.
Във вашия случай извличате само едно поле, така че масивът ще съдържа само един елемент (т.е. $row[0]
), но принципът е същият -- това е масив от единичен запис, който току-що прочетохте.
Само данните за текущия запис са в масива във всеки един момент. Ето какво е while
цикълът е за; връща се назад всички зарежда всеки запис един след друг.
Ако искате да създадете масив, който съдържа всички данни, трябва да го направите по следния начин:
$fullData = array()
while($row = mysql_fetch_array($tableIndex) ){
$fullData[] = $row[0];
}
Това ще постави всички данни, които четете, в един голям масив, което очаквате. Сега можете да направите това, което сте искали във въпроса:
echo $fullData[0].'<br>';
echo $fullData[1].'<br>';
echo $fullData[2].'<br>';
Надявам се, че това помага.
Тук си струва да се отбележи, че mysql_xxx()
фамилията от функции са остарели и се считат за остарели. Ако просто изучавате PHP (което изглежда е така), горещо ви препоръчвам да спрете да изучавате тези функции и да научите PDO
библиотека вместо това. Той е по-модерен и има много функции от mysql
функциите не могат да предоставят. Освен това бъдещите версии на PHP ще премахнат mysql
функционира изцяло, така че ще трябва да превключите в даден момент -- може и сега, докато все още се учите.
Освен това (за да поддържа нещата подходящи за въпроса), PDO библиотеката има функция, която всъщност прави това, което търсите в една функция:PDO::fetchAll()
. Използването на този метод означава, че виеможете извлича всички данни в един голям масив в един ред, без да е необходимо да правите цикъл while. Кодът би изглеждал донякъде така:
$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();
$result = $sth->fetchAll();
(пример взет от ръководството за PHP за PDO::fetchAll
)