MySql: индексный цикл

проблема
У меня есть таблица MySql с х строк, где каждая строка в качестве уникального идентификатора. Я хочу дать каждому из моих пользователей по 10 строк. Когда пользователь прочитал содержимое каждой строки, он нажимает «Далее», и я возвращаю ему следующий фрагмент из 10 строк (WHERE Id BETWEEN StartIndex AND StartIndex + 9). Это прекрасно работает, пока кусок не перекрывает стол. Как я могу эффективно начать заново с самого начала?

Мое (не очень хорошее) решение
Получение общего количества:

$result = $connection->query("SELECT count(Id) AS num_rows FROM Uris");
$count = $result->fetch_assoc()["num_rows"];

И затем некоторая логика if, чтобы проверить, перекрывается ли она (псевдокод):

if (StartIndex + 10 >= count)
makeTwoMySqlCalls(BETWEEN StartIndex AND count-1, BETWEEN 0 AND 10-count-StartIndex)

Есть ли лучший (более быстрый) способ сделать это?

PS: простите за заголовок, не знаю как назвать эту проблему.

0

Решение

Использовать LIMIT пункт:

SELECT * FROM the_table WHERE `id` >= start_id LIMIT 10

Это принесет до 10 строк, начиная с id со значением start_id,

Вы должны успеть разместить start_id в качестве значения в запросе используйте подготовленный оператор.

Посчитайте строки, которые вы получите, если их меньше 10, вы достигли последней страницы.

Если они равны 0, вы достигли последней страницы на предыдущей итерации.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector