sql >> Database teknologi >  >> RDS >> Mysql

mysql_fetch_array og while loop i php

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 )



  1. En-til-mange SQL SELECT i enkelt række

  2. MySQL-fejlretningsværktøj langsomme forespørgsler?

  3. hvordan man præfikser en streng før sekvens genereret af postgresql?

  4. NHibernate TransactionScope-problem med Oracle 11g