CodeIgniter框架对数据库查询结果进行统计
2024-08-29 01:03:03
假设有一个user表,如果要查询符合条件sex=male的记录数量,有下面几种方法:
方法一:先取回所有符合条件的记录,再count
$res = $this->db->query("select * from user where sex='male'")->result_array();
$num = count( $res );
不推荐上面的做法,因为我们的目的不是取回表中的数据,只需要具体的行数。取回数据的过程就是一个多余的操作,会浪费很多资源!
方法二:在SQL语句中使用count(*)
$sql = "select count(*) num from user where sex='male'";
$res = $this->db->query($sql)->row_array();
$num = $res['num'];
方法三:在取结果之前打印query返回值,通过获取query内部的属性名来获取num_rows,注意全是属性,不能使用数组格式访问:
$sql = "select * from user where sex='male'";
$res = $this->db->query($sql);
print_r($res);
访问程序,打印结果如下:
CI_DB_mysqli_result Object
(
[conn_id] => mysqli Object
(
[affected_rows] => 130
[client_info] => mysqlnd 5.0.11-dev - 20120503 - $Id: ....... $
[client_version] => 50011
[connect_errno] => 0
[connect_error] =>
[errno] => 0
[error] =>
[error_list] => Array()
[field_count] => 25
[host_info] => Localhost via UNIX socket
[info] =>
[insert_id] => 0
[server_info] => 5.1.73-log
[server_version] => 50173
[stat] => ........
[sqlstate] => 00000
[protocol_version] => 10
[thread_id] => 28698933
[warning_count] => 0
)
[result_id] => mysqli_result Object
(
[current_field] => 0
[field_count] => 25
[lengths] =>
[num_rows] => 130
[type] => 0
)
[result_array] => Array()
[result_object] => Array()
[custom_result_object] => Array()
[current_row] => 0
[num_rows] =>
[row_data] =>
)
可以注意到这里面有一个conn_id->affected_rows和 result_id->num_rows,所以可以通过这两个值获得结果集的记录数量:
echo $res->conn_id->affected_rows;
echo $res->result_id->num_rows;
第三种方法并不是很好的选择,推荐第二种,提到第三种方法的目的在于了解query的返回值,然后可以自己根据结果写一些helper来处理一些事情
最新文章
- SQL Server 抛出自定义异常,由C#程序俘获之并进行相应的处理
- [JavaEE]调用Restful Service 出现415 Unsupported Media Type的问题(Rest Request Header中的Content-Type问题)
- Top 10 Mistakes Java Developers Make--reference
- java语言基础特性
- iOS 定位服务、通讯录、日历、提醒事项、照片、蓝牙共享、麦克风、相机等授权检测
- Python:ajax 学习笔记
- HDU 5792 World is Exploding
- win7电脑关机时间长怎么办
- Vue购物车实例
- Math.floor(Math.random()*3+1)
- Helm 入门指南
- python闭包的理解说明
- Linux let 命令
- KafkaOffsetMonitor 安装
- OCiOS开发:音频播放器 AVAudioPlayer
- Kubernetes学习之路(一)之概念和架构解析和证书创建和分发
- 将MyEclipse项目导入到Eclipse中
- xp 如何打开(进行)远程桌面连接
- you-get 下载网络上的富媒体信息
- 物联网通信 - RESTDemo示例程序
热门文章
- Python3 socket网络编程(一)
- PHP中的Session工作原理
- Linux下编译安装Apache报APR not found错误的解决办法
- Kernel数据结构移植(list和rbtree)
- nginx入门与实战
- Unix/Linux环境C编程新手教程(21) 各个系统HelloWorld跑起来效果怎样?
- 基于Spring Boot和Shiro的后台管理系统FEBS
- 转://通过udev创建ASM共享磁盘(RAC)
- ansible的playbook进行yum批量安装nginx最新版本
- 004_后端js编写工具