Mysql
 sql >> база данни >  >> RDS >> Mysql

Защо моят цикъл foreach не работи според очакванията?

mysqli_query() не връща масив или масивен обект, който можете да използвате с foreach(). Върнатият тип на mysqli_query() е ресурс. Извличате от него в цикъл, като второто ви решение.

По-лесно е да използвате while() вместо for():

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

Цикълът ще приключи автоматично, когато извлеченият ред е NULL в края на набора от резултати. Не е необходимо да знаете броя на редовете преди цикъла.

Re your comment:

След търсене на някои факти , трябва да призная, че отговорът ми по-горе не е напълно верен. Или не е вярно за някои версии на PHP.

В PHP 5.4 ресурс mysqli_result добави Iterator функционалност, всъщност можете използвайте го в foreach() . Но вашият хост очевидно използва по-стара версия на PHP.

Най-добрата практика е да се разработва на една и съща версия на всички софтуер, който ще внедрите, така че да не бъдете хванати от този вид изненада.




  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_real_escape_string

  2. Как да сравним схемите на базата данни на MySQL

  3. Актуализирайте колоната с произволна стойност

  4. Какъв е най-добрият начин да съхранявате библията в SQL?

  5. Как да съхранявам ежедневни записи от mysql таблица в друга?