Mysql
 sql >> Baza danych >  >> RDS >> Mysql

mysql_fetch_array i pętla while w php

Zasadniczo nie rozumiesz, jak te rzeczy działają.

„Tablica” w mysql_fetch_array nie jest tablicą wszystkich rekordów, ale tablicą danych w bieżącym rekordzie.

W twoim przypadku pobierasz tylko jedno pole, więc tablica będzie zawierać tylko jeden element (np. $row[0] ), ale zasada jest taka sama — jest to tablica pojedynczego rekordu, który właśnie przeczytałeś.

W tablicy znajdują się jednocześnie tylko dane dla bieżącego rekordu. To właśnie while pętla jest dla; cofa wszystkie wczytywania każdego rekordu jeden po drugim.

Jeśli chcesz utworzyć tablicę zawierającą wszystkie dane, musisz to zrobić w ten sposób:

$fullData = array()
while($row = mysql_fetch_array($tableIndex) ){
    $fullData[] = $row[0];
}

Spowoduje to umieszczenie wszystkich odczytywanych danych w jednej dużej tablicy, czego oczekujesz. Teraz możesz zrobić to, co chciałeś zrobić w pytaniu:

echo $fullData[0].'<br>';
echo $fullData[1].'<br>';
echo $fullData[2].'<br>';

Mam nadzieję, że to pomoże.

Warto tutaj zaznaczyć, że mysql_xxx() rodziny funkcji są pomijane i uważane za przestarzałe. Jeśli dopiero uczysz się PHP (co wydaje się być prawdą), zdecydowanie zalecam zaprzestanie nauki tych funkcji i zapoznanie się z PDO biblioteka zamiast. Jest bardziej nowoczesny i ma wiele funkcji, które mysql funkcje nie mogą zapewnić. Ponadto przyszłe wersje PHP usuną mysql działa całkowicie, więc w pewnym momencie będziesz musiał się przełączyć — równie dobrze może być teraz, gdy jeszcze się uczysz.

Ponadto (aby zachować istotne znaczenie dla pytania), biblioteka PDO ma funkcję, która w rzeczywistości robi to, czego szukasz w pojedynczej funkcji:PDO::fetchAll() . Korzystanie z tej metody oznacza, że ​​możesz pobrać wszystkie dane do jednej dużej tablicy w jednym wierszu bez konieczności wykonywania pętli while. Kod wyglądałby trochę tak:

$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();
$result = $sth->fetchAll();

(przykład zaczerpnięty z podręcznika PHP dla PDO::fetchAll )



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysql czas Unii V.S. oddzielne zapytanie jeden po drugim

  2. Łączenie wierszy jako tablica z innej tabeli dla każdego wiersza

  3. Kod PHP podczas przeglądania pliku pdf z bazy danych mysql

  4. Najszybszy sposób na wstawienie 134675 wartości do zdalnej bazy danych

  5. C# dane bazy danych dostępu do aplikacji Windows nie są zachowywane po zamknięciu