Что такое "Получение строк с помощью прокручиваемого курсора"?
Что такое прокручиваемый курсор PDO?
Ответ 1
Он создает cursor для запроса, который позволяет выполнять итерацию по набору результатов без получения всего результата сразу. A прокручиваемый курсор, в частности, это тот, который позволяет выполнять повторное воспроизведение назад.
Пример использования: вы можете прокручивать вперед, пока не найдете нужную запись, и повторите ее, чтобы получить предыдущие записи, если они вам тоже нужны.
Ответ 2
Wikipedia дает следующее:
С помощью не прокручиваемого курсора, также известный только как прямой, FETCH каждая строка не более одного раза, а курсор автоматически переходит к следующий ряд. Операция выборки после последняя строка была восстановлена позиционирует курсор после последнего строка и возвращает SQLSTATE 02000 (SQLCODE +100).
И это:
Программа может позиционировать прокручиваемую курсор в любом месте набора результатов используя оператор FETCH SQL.
Вы должны прочитать статью, связанную ранее, но это также выглядит как интересная информация:
Прокручиваемые курсоры могут потенциально доступ к той же строке в наборе результатов много раз. Таким образом, данные изменения (вставка, обновление, удаление операции) из других транзакций может повлиять на результат набор.
В PHP вы можете использовать прокручиваемые курсоры с PDO с помощью подготовленных операторов (см. PDOStatement::fetch
):
Чтобы запросить прокручиваемый курсор для ваш объект PDOStatement, вы должны установить атрибут PDO:: ATTR_CURSOR для PDO:: CURSOR_SCROLL при подготовке оператор SQL с PDO:: prepare().
(также есть пример ниже этой страницы)
Кажется интересной возможность "прокручивать" через набор результатов, не заставляя все данные в памяти перебирать его.
Ответ 3
Для Mysql... не поддерживается = недоступно (ни mysql (i), ни PDO):
mysqli_result:: data_seek(), обратите внимание, что в руководстве указано: "Эта функция может использоваться только с буферизованными результатами, полученными с использованием функций mysqli_store_result() или mysqli_query()". То есть поиск выполняется на локально кэшированной копии набора результатов: не на сервере. Таким образом, он не поддерживает никаких предложений о "прокручиваемом курсоре".