实现PHP框架系列文章(6)mysql数据库方法


Posted in PHP onMarch 04, 2016

实现一个mysql数据库封装需要考虑的问题

1.使用方便性

采用直接sql语句操作方式。只要会写sql语句,那么将没有其他学习成本。

uctphp框架提供的dba辅助封装类,用会之后将爱不释手。

使用前需要显示初始化并连接到数据库吗,当然不需要。

直到执行第一条sql语句之前,都不会去连接数据库,甚至不会new一个db对象。

dba将会在合适的时机去连接数据库并执行初始化字符编码操作。

查询语句。不需要new一个查询构造器也不提供链式操作方式,那样复杂且低效。

dba提供了以下的查询辅助函数。

//读一个值
Dba::readOne($sql);
//读一行
Dba::readRowAssoc($sql);
//读所有行
Dba::readAllAssoc($sql);
//读所有行的第一列
Dba::readAllOne($sql);
//在实际业务场景中,经常会有分页读取部分数据的情况。
//只要一个函数即可返回指定页码的数据内容和数据总条数
Dba::readCountAndLimit($sql, $page, $limit);

ps:以上部分函数可以提供一个map函数对返回数组的每一行进行加工处理。

写语句。为什么要区分read和write呢,显然可以扩展做到控制读写分离,双写等功能。

在有各种云数据库和数据库中间件的今天,在数据库层实现是更好的选择。

Dba::write($sql);
/* 直接插入或更新kv形式的array数组
会自动对value进行转义,也支持array类型的值。
如果自己写sql语句要注意使用addslashes或mysql_real_escape_string来保证安全
*/
Dba::insert($table, $insert); 
Dba::update($table, $update, $where);
/*
对批量插入数据有更高的效率
当然过多的行数应该用array_chunk来分批插入。
*/
Dba::insertS($table, $inserts);

2. 事务

使用pdo支持事务

Dba::beginTransaction();
Dba::commit();
Dba::rollBack();

3. 长时间运行

在一些需要长时间运行的场景如swoole服务,后台worker等,可能会出现数据库连接超时的情况。

当发现数据库连接超时,dba将会自动尝试重连。

以上内容是小编给大家介绍的PHP框架系列文章(6)mysql数据库方法,希望对大家有所帮助!

PHP 相关文章推荐
让PHP开发者事半功倍的十大技巧小结
Apr 20 PHP
第四章 php数学运算
Dec 30 PHP
如何使用php输出时间格式
Aug 31 PHP
php中json_encode UTF-8中文乱码的更好解决方法
Sep 28 PHP
PHP合并静态文件详解
Nov 14 PHP
PHP实现即时输出、实时输出内容方法
May 27 PHP
PHP排序算法类实例
Jun 17 PHP
php自定义分页类完整实例
Dec 25 PHP
php微信支付之公众号支付功能
May 30 PHP
PHP信号处理机制的操作代码讲解
Apr 19 PHP
PHP开发API接口签名生成及验证操作示例
May 27 PHP
laravel入门知识点整理
Sep 15 PHP
Codeigniter中集成smarty和adodb的方法
Mar 04 #PHP
PHP常用技巧汇总
Mar 04 #PHP
将PHP程序中返回的JSON格式数据用gzip压缩输出的方法
Mar 03 #PHP
PHP的数组中提高元素查找与元素去重的效率的技巧解析
Mar 03 #PHP
CodeIgniter针对数据库的连接、配置及使用方法
Mar 03 #PHP
CodeIgniter表单验证方法实例详解
Mar 03 #PHP
PHP6新特性分析
Mar 03 #PHP
You might like
分享PHP计算两个日期相差天数的代码
2015/12/23 PHP
浅析PHP中的闭包和匿名函数
2017/12/25 PHP
Lazy Load 延迟加载图片的 jQuery 插件
2010/02/06 Javascript
javascript实现跳转菜单的具体方法
2013/07/05 Javascript
jquery实现checkbox 全选/全不选的通用写法
2014/02/22 Javascript
Javascript控制input输入时间格式的方法
2015/01/28 Javascript
解决bootstrap中modal遇到Esc键无法关闭页面
2015/03/09 Javascript
JavaScript中的Object对象学习教程
2016/05/20 Javascript
页面get请求 中文参数方法乱码问题的快速解决方法
2016/05/31 Javascript
jQuery插件cxSelect多级联动下拉菜单实例解析
2016/06/24 Javascript
AngularJS自定义控件实例详解
2016/12/13 Javascript
JS实现的表头列头固定页面功能示例
2017/01/10 Javascript
Jquery获取radio选中的值
2017/05/05 jQuery
javascript回调函数详解
2018/02/06 Javascript
layui 实现自动选择radio单选框(checked)的方法
2019/09/03 Javascript
JavaScript实现背景自动切换小案例
2019/09/27 Javascript
Python中的FTP通信模块ftplib的用法整理
2016/07/08 Python
Python实现的视频播放器功能完整示例
2018/02/01 Python
Python获取CPU、内存使用率以及网络使用状态代码
2018/02/08 Python
使用python获取电脑的磁盘信息方法
2018/11/01 Python
python生成n个元素的全组合方法
2018/11/13 Python
PyQt5创建一个新窗口的实例
2019/06/20 Python
python+opencv实现摄像头调用的方法
2019/06/22 Python
pymysql模块的使用(增删改查)详解
2019/09/09 Python
TensorFlow dataset.shuffle、batch、repeat的使用详解
2020/01/21 Python
opencv 图像加法与图像融合的实现代码
2020/07/08 Python
CSS3 透明色 RGBA使用介绍
2013/08/06 HTML / CSS
HTML5之WebGL 3D概述(上)—WebGL原生开发开启网页3D渲染新时代
2013/01/31 HTML / CSS
巴西葡萄酒商店:Divvino
2020/02/22 全球购物
应聘教师自荐信
2013/10/12 职场文书
大三学生入党思想汇报
2014/01/02 职场文书
股权转让协议书
2014/04/12 职场文书
巾帼文明岗申报材料
2014/05/01 职场文书
献爱心活动总结
2014/05/07 职场文书
大学毕业生自我评价
2015/03/02 职场文书
最新最全的手机号验证正则表达式
2022/02/24 Javascript