mysql_fetch_array возвращает только одну строку - PullRequest
2 голосов
/ 09 августа 2011

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

$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?

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

Ответы [ 3 ]

19 голосов
/ 09 августа 2011

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

while($data = mysql_fetch_array($array)) {
  //will output all data on each loop.
  var_dump($data);
}
4 голосов
/ 09 августа 2011

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

$array_result = array();
while ($row = mysql_fetch_array($array, MYSQL_NUM)) {
    $array_result[] = $row;
}
echo $array_result[4];
1 голос
/ 09 августа 2011

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

$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 и т. Д.)..)
Надеюсь, это поможет:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...