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.
Най-добрата практика е да се разработва на една и съща версия на всички софтуер, който ще внедрите, така че да не бъдете хванати от този вид изненада.