Estás malinterpretando fundamentalmente cómo funcionan estas cosas.
La "matriz" en mysql_fetch_array
no es una matriz de todos los registros, sino una matriz de los datos dentro del registro actual.
En su caso, solo está obteniendo un solo campo, por lo que la matriz solo contendrá un solo elemento (es decir, $row[0]
), pero el principio es el mismo:es una matriz del único registro que acaba de leer.
Solo los datos del registro actual están en la matriz en cualquier momento. Eso es lo que while
el bucle es para; retrocede cualquier carga cada registro uno tras otro.
Si desea crear una matriz que contenga todos los datos, debe hacerlo así:
$fullData = array()
while($row = mysql_fetch_array($tableIndex) ){
$fullData[] = $row[0];
}
Eso pondrá todos los datos que está leyendo en una gran matriz única, que es lo que está esperando. Ahora puedes hacer lo que querías hacer en la pregunta:
echo $fullData[0].'<br>';
echo $fullData[1].'<br>';
echo $fullData[2].'<br>';
Espero que ayude.
Vale la pena señalar aquí que mysql_xxx()
La familia de funciones está en desuso y se considera obsoleta. Si solo está aprendiendo PHP (que parece ser el caso), le recomiendo que deje de aprender estas funciones y aprenda el PDO
biblioteca en su lugar. Es más moderno y tiene muchas características que mysql
funciones no pueden proporcionar. Además, las futuras versiones de PHP eliminarán el mysql
funciona por completo, por lo que tendrá que cambiar en algún momento; también puede ser ahora, mientras aún está aprendiendo.
Además (para mantener las cosas relevantes para la pregunta), la biblioteca PDO tiene una función que de hecho hace lo que está buscando en una sola función:PDO::fetchAll()
. Usar este método significa que puede obtenga todos los datos en una sola gran matriz en una línea sin necesidad de hacer un ciclo while. El código se vería un poco así:
$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();
$result = $sth->fetchAll();
(ejemplo tomado del manual de PHP para PDO::fetchAll
)