Я пытаюсь реализовать функцию подкачки, используя возможность PDO создавать курсоры.
В настоящее время мой код выглядит примерно так (очень сложно, я знаю, что):
$pdo = new PDO();
$pdo->setAttribute(PDO::ATTR_CURSOR, PDO::CURSOR_SCROLL);
// prepared select-query omitted
$pdoStatement = $pdo->execute();
$start_index = MAX_THINGS_PER_PAGE * $current_page - MAX_THINGS_PER_PAGE;
$stop_index = MAX_THINGS_PER_PAGE * $current_page;
$row_count = $this->statement->rowCount(); // works for the PgSQL driver
$index = $start_index;
while (($row_count > 0) && ($index < $stop_index))
{
// try-catch block omitted
$values[] = $this->statement->fetch(PDO::FETCH_ASSOC, PDO::FETCH_ORI_ABS, $index);
--$row_count;
++$index;
}
Однако, по-видимому, независимо от значения $ start_index, запрос извлекает только первые 10 (это значение MAX_THINGS_PER_PAGE) строк результирующего набора.Всегда.
Возможно, я делаю что-то не так, но искусство использования курсоров для нумерации страниц выглядит несколько загадочно и недокументировано ...