Задать вопрос
SuperPaintma
@SuperPaintma

Какой принцип работы mysql_fetch_array() в PHP?

Добрый день! Из-за своего "нев********го" скила программиста стал учить PHP по исходникам, и нашла коса на камень.

Объясните принцип работы mysql_fetch_array(), а именно такого куска кода:
$result = mysql_query("SELECT id, title, text, author FROM test_tab", $link); //К этому времени уже базе приконекчен, и $link передает Сервер, пользователя и пароль БД.

while ($row = mysql_fetch_array($result)) 
{
	echo $row['id']." - ".$row['title']."<br>".$row['text']."<br>".$row['author']."<br><br>";
}


Вот. Все бы хорошо, но он сам итерирует ИД, как я понял. Т.е. Цикл заканчивается дойдя до последней записи в БД? Он сам себя итерирует не нуждаясь в этом со стороны? И как мне в таком случае, к примеру 3 раза выдернуть одну и туже запись?
Заранее спасибо!
  • Вопрос задан
  • 4905 просмотров
Подписаться 2 Оценить 1 комментарий
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Потому что эта функция и предназначена для перебора записей, возвращённых сервером по запросу. В небуферизированном режиме (mysql_unbuffered_query) она просто получает от сервера следующую строку ответа.
Переходите на mysqli, mysql уже в статусе depricated. Плюс в mysqli есть то, о чём Вы спрашиваете - функция mysqli_result::fetch_all.
Ответ написан
Комментировать
Cyapa
@Cyapa
Если не укладываетесь в одну петлю, то сначала нужно буферезировать ответ сервера:

while ($row = mysql_fetch_array($result)) 
{
    $rows[] = $row;
}


А потом уже вертеть $rows как душе угодно.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@artishok
кратко
Можно указать лимит, например: LIMIT 10, тогда будет выведено 10 записей. Без лимита будут выведены все записи из базы.
Зачем 3 раза выводить одну запись?
Ответ написан
Комментировать
SuperPaintma
@SuperPaintma Автор вопроса
Спасибо, все понял!
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы