首页 > 解决方案 > 尝试从 pdo 查询构建服务器端数据表

问题描述

我必须从服务器端构建一个数据表,因为我有超过 200k 行,而且我没有选择从执行语句中创建它,例如:

$result['draw']=1;
$temp = BD::query('SELECT * FROM `ersmessages` WHERE 1 LIMIT 10');
$result['recordsTotal'] = sizeof($temp);
$result['recordsFiltered'] = sizeof($temp);
$result['data'] = $temp;

但是当我这样做时,它不会对我的结果进行分页,并且对于 200k 行它会给出错误。如果我限制有效但在一页上的查询。

我的 JS 看起来像:

 $('#tableAllMessages').DataTable( {
        "processing": true,
        "serverSide": true,
        "paging": true,
        "searching": { "regex": true },
        "lengthMenu": [ [10, 25, 50, 100, -1], [10, 25, 50, 100, "All"] ],
        "pageLength": 10,
        "ajax": "req/getAllMessages.php"
    } );

我应该如何继续拥有一个包含 200k 行的分页数据表?我显然不能使用ssp。

标签: javascriptphpdatatablesserver-side

解决方案


好的,问题已经解决,我需要将 recordsTotal 设置为我的最大(200k 行)大小,并且我需要为查询添加一个偏移量,这样我就可以对我的表进行分页。

$offset = $_REQUEST['start'];
$result['recordsTotal'] = 200000;
$query = BD::query('SELECT * FROM `ersmessages` WHERE 1 ORDER BY `idERSMessage` ASC LIMIT 10 OFFSET '.intval($offset))
$result['data'] = $query;
$result['draw']=$_REQUEST['draw'];

推荐阅读