Предел запросов к базе данных CodeIgniter - PullRequest
9 голосов
/ 03 февраля 2011

Я делаю некоторые дБ-запросы, используя ActiveRecord, и мне нужно разбить на страницы результаты, поэтому я делаю

$this->db->limit($pPagination['Start'], $pPagination['Length']);

но я не получаю никаких результатов. При использовании $this->db->last_query(); кажется, что CodeIgniter создает следующий SQL

SELECT *
FROM (`viw_contacts`)
WHERE `user_id` = '1'
ORDER BY `contact_name` asc
LIMIT 0 OFFSET 15

который при запуске внутри PHPMyAdmin также возвращает 0 строк.

Но если я изменю это, запустите:

SELECT *
FROM (`viw_contacts`)
WHERE `user_id` = '1'
ORDER BY `contact_name` asc
LIMIT 0, 15

Тогда я получаю правильные результаты. Любая идея, почему CodeIgniter генерирует этот SQL и почему он не работает?

Я использую CodeIgniter 1.7.3 и MySQL 5.1.41

1 Ответ

21 голосов
/ 03 февраля 2011

Хорошо, нашли проблему.

Это

$this->db->limit($pPagination['Length'], $pPagination['Start']);

вместо

$this->db->limit($pPagination['Start'], $pPagination['Length']);

Первый параметр - это Длина, а второй - это смещение, а не наоборот, как я думал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...