Обычно я стараюсь минимизировать вызовы MySQL, но, возможно, я столкнулся с тем случаем, когда мне приходится выполнять несколько вызовов MySQL в одном скрипте.Использование mysql_fetch_assoc дважды в одном скрипте PHP
Похоже, вы не можете использовать mysql_fetch_assoc
дважды в одном скрипте (!).
Похоже, что mysql_data_seek - это решение, но я не могу заставить его работать.
Чтобы быть ясным, у меня есть два вопроса, которые мне нужно сделать. Второй запрос зависит от результатов первого ... Вот структура:
$result = mysql_query($query1); while($row = mysql_fetch_assoc($result)){ $pos = $row['position']; } mysql_free_result($result); // result freed per comment below. $query2 = ' '; //... dependent on $pos - in mysql shell this returns results! $result2 = mysql_query($query2) while($row = mysql_fetch_assoc($result2)){ echo $row['id']; }
Что происходит выше, что второе, а возвращает цикл никаких результатов, даже если запрос не должны иметь нетривиальные строки.
Просто, чтобы быть уверенным: ли это, как вы очистить указатель от предыдущего результата, чтобы иметь возможность использовать mysql_fetch_assoc снова?
mysql_data_seek($result,mysql_num_rows($result) - 1);
Я не уверен, что использовать в качестве второго аргумента. Правда, я не то, что ясно на указатели, но мне кажется, я должен очистить указатель на 0. Но я получаю эту ошибку:
Offset 0 is invalid for MySQL result index 8 (or the query data is unbuffered
http://lt.php.net/mysql_data_seek –
http://stackoverflow.com/questions/5749711/why-you-should-not-use-mysql-fetch-assoc-more-than-1-time –
Вы можете вызывать его столько раз, сколько хотите, но вы получите результаты только в том случае, если вы передаете действительный дескриптор результата, и этот результат по-прежнему имеет свободные строки. –