一.分页功能

假设接口要接受输入:page, page_limit,key,value,table 来查询 table 中 key like value 的元组中以 page_limit 为 page size 时第 page 页的数据。

要求输出为:{"count" => $count,"row" => $result},其中 count 为总元组数,row 为当前返回页的元组

在 mysqliDb 中,能获取元组计数的方式有如下 3 种:

  1. $count = self::$_db->getValue(self::$_table_name, "count(*)"); // 这种计数方式不接受任何 where 条件。
    //即获取的 count 为表 _table_name 中的总元组数。用来做模糊查询分页显然是不可行的

  2. self::$_db->pageLimit = $page_limit;
    slef::_db->where(key, value, "like");
    $result = self::$_db->arrayBuilder()->paginate(self::$_table_name, $page, $columns);
    $count = self::$_db->count;//这里得到的 count == count($result),显然不是我们期望的结果
    //且 $_db->count 中的 count 是在实际查询操作后才被赋值的,在这段代码中即是在 paginate 操作后被赋值的

  3. $begin = ($page - 1) * $page_limit;
    $result = self::$_db->withTotalCount()->get(self::$_table_name, array($begin, $page_limit), $columns);
    //从第begin条元组开始,返回 page_limit 条元组。并给 totalCount 赋值 limit 限制外的结果即我们想要的count总数
    $count = self::$_db->totalCount;

显然,通过第 3 中方式我们可以很简单地实现上题中的需求

MysqliDb 库的一些使用简单技巧(php)的更多相关文章

  1. gin使用validator库参数校验若干实用技巧

    validator库参数校验若干实用技巧 本文介绍了使用validator库做参数校验的一些十分实用的使用技巧,包括翻译校验错误提示信息.自定义提示信息的字段名称.自定义校验方法等. validato ...

  2. Win8.1下FreeImage.lib库的配置和简单使用(转)

    转自http://www.codeweblog.com/win8-1下freeimage-lib库的配置和简单使用/ 首先,你可以从这里获取FreeImage的完整库文件(访问密码 9a5e). 配置 ...

  3. PHP 常用函数库和一些实用小技巧

    PHP 常用函数库和一些实用小技巧 作者: 字体:[增加 减小] 类型:转载   包括文件读取函式,文件写入函式,静态页面生成函式,目录删除函式等   文件读取函式 //文件读取函式 function ...

  4. VS调试的简单技巧

    学习之路三十二:VS调试的简单技巧   这段时间园子里讲了一些关于VS的快捷键以及一些配置技巧,挺好的,大家一起学习,一起进步. 这段时间重点看了一下关于VS调试技巧方面的书,在此记录一下学习的内容吧 ...

  5. day-11 python自带库实现2层简单神经网络算法

    深度神经网络算法,是基于神经网络算法的一种拓展,其层数更深,达到多层,本文以简单神经网络为例,利用梯度下降算法进行反向更新来训练神经网络权重和偏向参数,文章最后,基于Python 库实现了一个简单神经 ...

  6. GO的日志库log竟然这么简单!

    前言 最近在尝试阅读字节开源RPC框架Kitex的源码,看到日志库klog部分,果不其然在Go原生的log库的基础上增加了自己的设计,大体包括增加了一些格式化的输出.增加一些常用的日志级别等. 一番了 ...

  7. GitHub开源库排名一百的简单介绍,值得收藏!

    GitHub Android Libraries Top 100 简介 本项目主要对目前 GitHub 上排名前 100 的 Android 开源库进行简单的介绍, 至于排名完全是根据 GitHub ...

  8. iOS实用技能扩展-静态库的制作与简单使用

    前言:此文是关于静态库的概念描述,如何制作及简单调试使用,不同版本的说明与场景使用. 1.关于库的简介: 库可以分为2种类型 开源库 公开源代码,能看到具体实现 比如SDWebImage.AFNetw ...

  9. Android事件总线分发库EventBus3.0的简单讲解与实践

    Android事件总线分发库EventBus的简单讲解与实践 导语,EventBus大家应该不陌生,EventBus是一款针对Android优化的发布/订阅事件总线.主要功能是替代Intent,Han ...

随机推荐

  1. notepad++正则表达式例子

    1.匹配create table USR.APP (  这样的字符串: create.*USR.APP\s+\(

  2. maven 统一管理依赖的版本号

  3. JS nodeJs 的日期计算

    目录[-] date-utils Static Methods 静态方法 Instance Methods 接口方法 date-utils 前端引用 <script type="tex ...

  4. SO_KEEPALIVE选项

    [SO_KEEPALIVE选项 ] 对于面向连接的TCP socket,在实际应用中通常都要检测对端是否处于连接中,连接端口分两种情况: 1.连接正常关闭,调用close() shutdown()连接 ...

  5. python初步要点II

    [python初步要点II] 1.is & is not 操作符用于测试2个对象是否指向同一个对象,即 id(a) == id(b). 2.整形和字符串对象是不可变对象,python会高效地缓 ...

  6. python之time&datetime

    [time] secs:统一值,无local.UTC之分. struct_time:有local.UTC之分. time.time():返回secs,secs为统一值,无local&utc之分 ...

  7. CentOS6,7不同

    centos6与centos7,防火墙,开机自启不同 6用iptables,7用firewall-cmd http://www.cnblogs.com/liyuanhong/articles/7064 ...

  8. sql拼接字符串

    update boc_loan_apply set birthday=concat(birthday,'-01');

  9. [Jmeter]让报告在邮件中以链接进行显示,通过IIS

  10. MySQL 系列(二)Jdbc

    MySQL 系列(二)Jdbc 一.Jdbc 基本操作 import java.sql.Connection; import java.sql.DriverManager; import java.s ...