codeigniter上的SQL查询限制和偏移错误

时间:2014-02-10 23:52:38

标签: php mysql codeigniter limit offset

  

错误号码:1064

     

您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第1行的“3”附近使用正确的语法

     

SELECT * FROM tbl_testimoni order by id DESC limit 3 offset'3'

     

文件名:D:\ wamp \ www \ obatrohanifinalcopy \ system \ database \ DB_driver.php

     

行号:330

您好,我的查询语法有问题。我认为问题出在limitoffset查询中。因为我在没有limitoffset的情况下尝试过,我的脚本可以正常运行。但是分页功能根据我的意愿不起作用。

这是我的控制者:

$url=$this->uri->segment(3,0);
        $this->load->library('pagination');
        $config['base_url'] = site_url().'/testimonial/all/';
        $config['total_rows'] = $this->db->get('tbl_testimoni')->num_rows();
        $config['per_page'] = 3;
        $this->pagination->initialize($config);
        $data['page']=$this->pagination->create_links();

        $sql = " SELECT * FROM tbl_testimoni order by id DESC limit 3 offset ? ";
        $binds = array($url);
        $query = $this->db->query($sql, $binds);
        $artikel = $query->result_array();
        $data['action'] = 'testimonial/all';
        $data['artikel'] = $artikel;
        $data['content'] = 'content/testimoni';
        $this->load->view('template/default', $data);

在我看来,使用此代码调用分页:

<?php if(!empty($page)) echo $page; ?>

我的代码无法正常运行。

注意:我在我以前的网站上使用过这个控制器和视图,但是我使用的是PostgreSQL并且它有效。

2 个答案:

答案 0 :(得分:1)

尝试对$binds

中的$this->db->query($sql, intval($binds));变量进行类型转换

此外,文档$this->uri->segment()可能会返回布尔值,因此您可能也希望处理它。

答案 1 :(得分:0)

偏移量应该是数字而不是字符串“3”

当你通过$this->db->query($sql, $binds);中的$ binds时,数据库驱动程序认为它是一个值并替换你的?使用'3'应该是OFFSET 3