У меня есть результирующий набор, который я извлекаю из большой базы данных:
$result = mysql_query($sql);
Я прокручиваю этот набор записей один раз, чтобы вытащить определенные биты данных и получить средние значения, используя while($row = mysql_fetch_array($result))
. Позже на странице я хочу снова пропустить этот же набор записей и вывести все, но поскольку раньше я использовал набор записей, мой второй цикл ничего не возвращает.
Я, наконец, взломал это, перейдя по второму идентичному $result2 = mysql_query($sql);
записей ( $result2 = mysql_query($sql);
), но мне не нравится делать один и тот же вызов SQL дважды. В любом случае, я могу несколько раз перебирать один и тот же набор данных?
Использование:
mysql_data_seek($result, 0);
Вы получаете это «бесплатно», так как оно уже буферизовано.
В качестве отдельной заметки вы можете явно выполнить небуферизованный запрос с помощью mysql_unbuffered_query
.
Используя SQL- курсоры, вы можете получить такой подход