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

Dlaczego moja pętla foreach nie działa zgodnie z oczekiwaniami?

mysqli_query() nie zwraca tablicy ani obiektu tablicy, którego można użyć z funkcją foreach(). Typ zwracany przez mysqli_query() to zasób. Pobierasz z niego w pętli, tak jak drugie rozwiązanie.

Łatwiej jest użyć while() zamiast for():

$cast_list = mysqli_query($dblink, $sql);
while ($role = mysqli_fetch_assoc($cast_list)) {
    echo "<tr><td width='50%'>".$role['appeared_as']."</td>";
}

Pętla zakończy się automatycznie, gdy pobrany wiersz będzie miał wartość NULL na końcu zestawu wyników. Nie musisz znać liczby wierszy przed pętlą.

Odpowiedz na swój komentarz:

Po sprawdzeniu kilku faktów , muszę przyznać, że moja odpowiedź powyżej nie jest do końca prawdziwa. Lub nie jest prawdą w przypadku niektórych wersji PHP.

W PHP 5.4 dodano zasób mysqli_result Iterator funkcjonalność, faktycznie możesz użyj go w foreach() . Ale twój host najwyraźniej używa starszej wersji PHP.

Najlepszą praktyką jest programowanie w tej samej wersji wszystkich oprogramowanie, na którym będziesz wdrażać, więc nie będziesz zaskoczony tego rodzaju niespodzianką.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Struktura projektu bazy danych Mysql

  2. Nie można wybrać grupowania wierszy według created_at

  3. AKTUALIZACJA SQL z LIKE

  4. Warunki wyścigu MySQL

  5. Tabela błędów Mysql 1050 już istnieje, podczas gdy w rzeczywistości tak nie jest