技术&日志

easyswoole中的mysqli带条件返回数据及总条数

easyswoole mysqli 分页

正确用法

<?php
$table_name = 'xsk_test';
$page=3;
$page_size=20;
$db->where('status', 1);
$db->withTotalCount();
$data = $db->get($table_name,[($page-1)*$page_size,$page_size],'*');
$count = $db->getTotalCount();

错误用法

<?php
$table_name = 'xsk_test';
$page=3;
$page_size=20;
$db->where('status', 1);
$data = $db->get($table_name,[($page-1)*$page_size,$page_size],'*');
$count = $db->count();// 这儿的count的where条件会消失

mysqli的源码

count是再次调用了get的方法 源码位置

    /**
     * 聚合-计算总数
     * @param string $tableName 表名称
     * @param string|null $filedName 字段名称
     * @return mixed
     * @throws ConnectFail
     * @throws PrepareQueryFail
     */
    public function count($tableName, $filedName = null)
    {
        if (is_null($filedName)) {
            $filedName = '*';
        }
        $isFetch = $this->isFetchSql;
        $retval = $this->get($tableName, null, "COUNT({$filedName}) as retval");
        if ($isFetch || $retval instanceof Mysqli) {
            return $retval;
        }
        return $retval ? $retval[0]['retval'] : false;
    }

相关资料

官方文档

发表评论