【问题标题】:SQL query limit and offset error on codeignitercodeigniter上的SQL查询限制和偏移错误
【发布时间】:2014-03-08 13:28:05
【问题描述】:

错误号: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,它可以工作。

【问题讨论】:

    标签: php mysql codeigniter limit offset


    【解决方案1】:

    偏移量应该是一个数字而不是字符串'3'

    当您在$this-&gt;db-&gt;query($sql, $binds); 中传递 $binds 时,DB 驱动程序认为它是一个值并替换您的 ? '3'应该是OFFSET 3

    【讨论】:

    • 结果表现不佳。刚刚调用了多个数据库,当我点击分页时。结果和开始页出现的一样
    • 如果它总是给出相同的结果,那么问题可能出在 url 段中,您能否检查您从 uri 段中获得的值,也可以echo $this-&gt;db-&gt;last_query() 查看最后一个查询到底是什么执行。
    【解决方案2】:

    尝试像$this-&gt;db-&gt;query($sql, intval($binds)); 那样对$binds 变量进行类型转换

    此外,根据文档$this-&gt;uri-&gt;segment() 可能会返回布尔值,因此您可能也想处理它。

    【讨论】:

    • 还是和之前一样,先生。下一页的结果仍然与第一页相同。不出现下一条数据
    猜你喜欢
    • 2012-05-17
    • 2017-09-22
    • 2016-06-18
    • 1970-01-01
    • 2013-01-30
    • 1970-01-01
    • 2012-03-14
    • 2019-06-06
    • 2014-02-21
    相关资源
    最近更新 更多