2011-02-03 3 views
8

Je fais quelques db querys utilisant ActiveRecord et je dois paginer les résultats donc je fais unCodeIgniter limite de requête de base de données

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

mais je ne reçois aucun résultat. En utilisant $this->db->last_query(); il semble que CodeIgniter produit le SQL

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

suivant qui quand je le lance à l'intérieur PHPMyAdmin retourne aussi 0 lignes.

Mais si je le modifie une course:

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

Puis-je obtenir des résultats corrects. Toute idée pourquoi CodeIgniter génère ce SQL et pourquoi cela ne fonctionne pas?

J'utilise CodeIgniter 1.7.3 et MySQL 5.1.41

Répondre

20

Ok, trouvé la question.

Il est

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

au lieu de

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

premier est la longueur param et la seconde est le décalage, et non l'inverse, comme je pensais.

Questions connexes