Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用组内的CONCAT限制/偏移查询_CONCAT以在codeigniter中创建分页_Php_Mysql_Codeigniter_Pagination - Fatal编程技术网

Php 如何使用组内的CONCAT限制/偏移查询_CONCAT以在codeigniter中创建分页

Php 如何使用组内的CONCAT限制/偏移查询_CONCAT以在codeigniter中创建分页,php,mysql,codeigniter,pagination,Php,Mysql,Codeigniter,Pagination,我的问题是,我想从图书列表中创建分页,但我不知道如何使用active record或任何其他方法来实现。这是一个查询,我想得到限制和偏移量,以便进行分页 SELECT books.isbn, books.title, GROUP_CONCAT(CONCAT(author.fname,' ',author.lname)) AS FullName, books.date_published,

我的问题是,我想从图书列表中创建分页,但我不知道如何使用active record或任何其他方法来实现。这是一个查询,我想得到限制和偏移量,以便进行分页

   SELECT books.isbn,
              books.title,
              GROUP_CONCAT(CONCAT(author.fname,' ',author.lname)) AS FullName,
              books.date_published,
              books.price,
              books.stock,
              books.img,
              books.summary,
              books.status,
              bookscategory.id AS bookcategoryid,
              bookscategory.bookcategory FROM books 
            LEFT JOIN bookauthor
             ON books.isbn = bookauthor.isbn
            LEFT JOIN author 
            ON bookauthor.aid = author.id
            LEFT JOIN bookscategory 
            ON books.bookcategory = bookscategory.id
            WHERE books.stock > 0 GROUP BY books.isbn

提前谢谢

试试这样的东西,你需要相应地改变它

您的控制器:

$limit                      = 20;
/*pagination start*/
$this->load->library('pagination');
$config['base_url']         = base_url().'controller_name/this_function_name/';
$config['total_rows']       = $this->your_model->total_count_books();
$config['per_page']         = 30;
$config['uri_segment']      = 3;
$config['next_link']        = 'Next';
$config['prev_link']        = 'Prev';
$config['cur_tag_open']     = '<span class="active_page">';
$config['cur_tag_close']    = '</span>';
$this->pagination->initialize($config);

$data           = array();
$data['books']  = $this->your_model->get_books($limit, $this->uri->segment( 3 ));

它给了我一个错误先生
你的SQL语法有一个错误;如果我删除
$sql.=“Limit{$Limit},{$offset},”,请查看与您的MySQL服务器版本对应的手册,以了解可在附近使用的正确语法工作正常
$data['pagination']=$this->pagination->create_links()我的控制器中有此代码,但当我尝试在视图中回显它时,它不会显示。请先在控制器中回显它。并且还回显由
total\u count\u books()
函数返回的
total count
function total_count_books(){
    $sql    = "SELECT count( books.isbn ) as total FROM books 
        LEFT JOIN bookauthor
         ON books.isbn = bookauthor.isbn
        LEFT JOIN author 
        ON bookauthor.aid = author.id
        LEFT JOIN bookscategory 
        ON books.bookcategory = bookscategory.id
        WHERE books.stock > 0 GROUP BY books.isbn";
    $data   = $this->db->query( $sql )->row_array();
    return $data['total'];       
}

function get_books( $limit, $offset = 0 ){
    $sql    = "SELECT books.isbn,
          books.title,
          GROUP_CONCAT(CONCAT(author.fname,' ',author.lname)) AS FullName,
          books.date_published,
          books.price,
          books.stock,
          books.img,
          books.summary,
          books.status,
          bookscategory.id AS bookcategoryid,
          bookscategory.bookcategory FROM books 
        LEFT JOIN bookauthor
         ON books.isbn = bookauthor.isbn
        LEFT JOIN author 
        ON bookauthor.aid = author.id
        LEFT JOIN bookscategory 
        ON books.bookcategory = bookscategory.id
        WHERE books.stock > 0 GROUP BY books.isbn";
        if( !$offset ){
            $offset = 0;
        }
        $sql      .= " Limit {$offset}, {$limit}";
    return $data   = $this->db->query( $sql )->result_array(); #or ->result();
}