实现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 print EOF实现方法
May 21 PHP
php中常用的预定义变量小结
May 09 PHP
php创建sprite
Feb 11 PHP
php去除字符串换行符示例分享
Feb 13 PHP
php导出excel格式数据问题
Mar 11 PHP
php的dl函数用法实例
Nov 06 PHP
PHP设计模式之装饰者模式代码实例
May 11 PHP
PHP框架Laravel学习心得体会
Oct 28 PHP
php关键字仅替换一次的实现函数
Oct 29 PHP
php中get_magic_quotes_gpc()函数说明
Feb 06 PHP
php实现多站点共用session实现单点登录的方法详解
Sep 18 PHP
PhpStorm的使用教程(本地运行PHP+远程开发+快捷键)
Mar 26 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 判断常量,变量和函数是否存在
2009/04/26 PHP
PHPExcel读取Excel文件的实现代码
2011/12/06 PHP
PHP面向对象——访问修饰符介绍
2012/11/08 PHP
PHP类的特性实例分析
2016/09/28 PHP
如何在标题栏显示框架内页面的标题
2007/02/03 Javascript
返回顶部按钮响应滚动且动态显示与隐藏
2014/10/14 Javascript
javascript 数组操作详解
2015/01/29 Javascript
javascript 对象数组根据对象object key的值排序
2015/03/09 Javascript
JavaScript编写简单的计算器
2015/11/25 Javascript
详解JavaScript树结构
2017/01/09 Javascript
Vue2.0 实现单选互斥的方法
2018/04/13 Javascript
JS如何获取地址栏的参数实例讲解
2018/10/06 Javascript
详解Webstorm 下的Angular2.0开发之路(图文)
2018/12/06 Javascript
Vue3.0 响应式系统源码逐行分析讲解
2019/10/14 Javascript
[02:09]2018DOTA2亚洲邀请赛TNC赛前采访
2018/04/04 DOTA
编写Python脚本使得web页面上的代码高亮显示
2015/04/24 Python
Python脚本判断 Linux 是否运行在虚拟机上
2015/04/25 Python
Python对文件操作知识汇总
2016/05/15 Python
简单谈谈python中的Queue与多进程
2016/08/25 Python
使用Selenium破解新浪微博的四宫格验证码
2018/10/19 Python
python生成九宫格图片
2018/11/19 Python
Python模拟百度自动输入搜索功能的实例
2019/02/14 Python
使用python实现mqtt的发布和订阅
2019/05/05 Python
Python3+selenium实现cookie免密登录的示例代码
2020/03/18 Python
Python xlrd模块导入过程及常用操作
2020/06/10 Python
pytorch查看模型weight与grad方式
2020/06/24 Python
详解python中的lambda与sorted函数
2020/09/04 Python
大专自我鉴定范文
2013/10/01 职场文书
请假条的格式
2014/04/11 职场文书
师德师风承诺书
2014/05/23 职场文书
家庭财产分割协议范文
2014/11/24 职场文书
2016年社区“6.26”禁毒日宣传活动总结
2016/04/05 职场文书
三好学生竞选稿范文
2019/08/21 职场文书
Python中zipfile压缩包模块的使用
2021/05/14 Python
win11怎么用快捷键锁屏? windows11锁屏的几种方法
2021/11/21 数码科技
Go结合Gin导出Mysql数据到Excel表格
2022/08/05 Golang