实现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 相关文章推荐
example1.php
Oct 09 PHP
PHP中实现图片的锐化
Oct 09 PHP
一个连接两个不同MYSQL数据库的PHP程序
Oct 09 PHP
动态生成gif格式的图像要注意?
Oct 09 PHP
中篇:安装及配置PHP
Dec 13 PHP
PHP实现的MongoDB数据库操作类分享
May 12 PHP
PHP获取数组的键与值方法小结
Jun 13 PHP
对比PHP对MySQL的缓冲查询和无缓冲查询
Jul 01 PHP
PHP简单创建压缩图的方法
Aug 24 PHP
php 解决扫描二维码下载跳转问题
Jan 13 PHP
PHP实现多级分类生成树的方法示例
Feb 07 PHP
总结的一些PHP开发中的tips(必看篇)
Mar 24 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多线程类及用法实例
2014/12/03 PHP
php生成二维码
2015/08/10 PHP
PHP实现活动人选抽奖功能
2017/04/19 PHP
Laravel框架实现利用中间件进行操作日志记录功能
2018/06/06 PHP
Thinkphp自定义生成缩略图尺寸的方法
2019/08/05 PHP
Yii框架数据库查询、增加、删除操作示例
2019/10/14 PHP
网上抓的一个特效
2007/05/11 Javascript
关于IE、Firefox、Opera页面呈现异同 写脚本很痛苦
2009/08/28 Javascript
javascript 在firebug调试时用console.log的方法
2012/05/10 Javascript
GridView中获取被点击行中的DropDownList和TextBox中的值
2013/07/18 Javascript
js控制页面控件隐藏显示的两种方法介绍
2013/10/09 Javascript
使用jquery自定义鼠标样式满足个性需求
2013/11/05 Javascript
jquery实现点击页面计算点击次数
2015/01/23 Javascript
jquery实现拖拽调整Div大小
2015/01/30 Javascript
JavaScript中解决多浏览器兼容性23个问题的快速解决方法
2016/05/19 Javascript
javascript实现去除HTML标签的方法
2016/12/26 Javascript
详解angular中通过$location获取路径(参数)的写法
2017/03/21 Javascript
bootstrap警告框示例代码分享
2017/05/17 Javascript
实战node静态文件服务器的示例代码
2018/03/08 Javascript
vue实现图片懒加载的方法分析
2020/02/05 Javascript
微信小程序实现canvas分享朋友圈海报
2020/06/21 Javascript
[02:40]DOTA2英雄基础教程 炼金术士
2013/12/23 DOTA
python基于multiprocessing的多进程创建方法
2015/06/04 Python
Python数据分析之双色球基于线性回归算法预测下期中奖结果示例
2018/02/08 Python
Python内置模块ConfigParser实现配置读写功能的方法
2018/02/12 Python
OpenCV2从摄像头获取帧并写入视频文件的方法
2018/08/03 Python
python 与服务器的共享文件夹交互方法
2018/12/27 Python
python将pandas datarame保存为txt文件的实例
2019/02/12 Python
Python新手如何进行闭包时绑定变量操作
2020/05/29 Python
Python使用Matlab命令过程解析
2020/06/04 Python
python 中的9个实用技巧,助你提高开发效率
2020/08/30 Python
美国最大的旗帜经销商:Carrot-Top
2018/02/26 全球购物
澳大利亚在线家具店:Luxo Living
2019/03/24 全球购物
视图的作用
2014/12/19 面试题
公司晚会主持词
2014/03/22 职场文书
四年级作文之植物
2019/09/20 职场文书