Несколько циклов PHP WHILE, использующих один и тот же запрос - PullRequest
6 голосов
/ 29 августа 2009
$query1 = "SELECT * FROM idevaff_affiliates";
$affiliateID = mysql_query($query1) or die(mysql_error());

Это мой запрос выше - я хотел бы использовать его для двух циклов WHILE

Первый находится в разделе заголовка - настройка jquery

while($row = mysql_fetch_assoc($affiliateID)){
}

Второй используется в цикле while в теле

while($row = mysql_fetch_assoc($affiliateID)){
}

Почему я не могу заставить его работать? - Я все заработал, но мне пришлось сделать два запроса, используя одну и ту же информацию SELECT, используя две разные переменные.

Ответы [ 3 ]

11 голосов
/ 29 августа 2009

Вызов mysql_fetch_assoc() возвращает следующую строку (т. Е. Следующую, которую вы еще не получили). После того как вы получили все строки, он возвращает false. Итак, после того, как вы прошли этот первый цикл, вы получили , извлекли все строки, и все, что вы получите, это false каждый раз!

Если вам нужно дважды использовать одни и те же данные, как насчет размещения их в массиве?

$rows = array();
while($row = mysql_fetch_assoc($affiliateID)){ 
    $rows[] = $row;
}

Теперь вы можете перебирать $rows столько раз, сколько захотите:

foreach($rows as $row) { ... }
7 голосов
/ 29 августа 2009

Это не работает, потому что как только вы один раз пройдете через набор результатов, внутренний указатель результатов будет в конце. Чтобы использовать его снова, вам нужно использовать mysql_data_seek перед вторым циклом, чтобы сбросить внутренний указатель на начало набора результатов.

1 голос
/ 30 августа 2009

Вы можете искать первую строку ... используя mysql_data_seek ($ affiliateID, 0), теперь вы можете снова выполнить mysql_fetch_assoc () ... в любом случае, я предпочитаю загружать результат в массив.

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