mysql_fetch_array возвращает только одну строку

Хорошо, у меня есть следующий код:

$array = mysql_query("SELECT artist FROM directory WHERE artist LIKE 'a%' OR artist LIKE 'b%' OR artist LIKE 'c%'"); $array_result= mysql_fetch_array($array); 

Затем, когда я пытаюсь повторить содержимое, я могу только эхо $array_result[0]; , который выводит первый элемент, но если я попытаюсь выполнить эхо $array_result[1]; Я получаю неопределенное смещение.

Тем не менее, если я запускаю указанный выше запрос через PHPMyAdmin, он возвращает список из 10 элементов. Почему это не признано в виде массива из 10 элементов, что позволяет мне откликнуть 0-9?

Спасибо за помощь.

Это потому, что массив представляет собой одну строку в возвращаемом наборе результатов. Вам нужно снова выполнить mysql_fetch_array() чтобы получить следующую запись. Пример:

 while($data = mysql_fetch_array($array)) { //will output all data on each loop. var_dump($data); } 

Вы должны использовать while чтобы получить все данные.

 $array_result = array(); while ($row = mysql_fetch_array($array, MYSQL_NUM)) { $array_result[] = $row; } echo $array_result[4]; 

Вместо этого я предпочитаю использовать этот код:

 $query = "SELECT artist FROM directory WHERE artist LIKE 'a%' OR artist LIKE 'b%' OR artist LIKE 'c%'"; $result = mysql_query($query) or die(mysql_error()); while(list($artist) = mysql_fetch_array($result)) { echo $artist; } 

Если вы добавите больше полей в свой запрос, просто добавьте больше переменных в список ($ artist, $ field1, $ field2 и т. Д.)
Я надеюсь, что это помогает 🙂