实现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 相关文章推荐
Gregarius中文日期格式问题解决办法
Apr 22 PHP
php下通过伪造http头破解防盗链的代码
Jul 03 PHP
php在服务器执行exec命令失败的解决方法
Mar 03 PHP
显示youtube视频缩略图和Vimeo视频缩略图代码分享
Feb 13 PHP
PHP使用gmdate实现将一个UNIX 时间格式化成GMT文本的方法
Mar 19 PHP
android上传图片到PHP的过程详解
Aug 03 PHP
PHP编写RESTful接口的方法
Feb 21 PHP
Zend Framework教程之连接数据库并执行增删查的方法(附demo源码下载)
Mar 21 PHP
thinkPHP中验证码的简单实现方法
Dec 05 PHP
PHP实现打包zip并下载功能
Jun 12 PHP
关于Laravel参数验证的一些疑与惑
Nov 19 PHP
php测试kafka项目示例
Feb 06 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
mysql_fetch_assoc和mysql_fetch_row的功能加起来就是mysql_fetch_array
2007/01/15 PHP
PHP 自定义错误处理函数的使用详解
2013/05/10 PHP
php颜色转换函数hex-rgb(将十六进制格式转成十进制格式)
2013/09/23 PHP
PHP return语句另类用法不止是在函数中
2014/09/17 PHP
Yii实现自动加载类地图的方法
2015/04/01 PHP
php事件驱动化设计详解
2016/11/10 PHP
PHP操作MySQL中BLOB字段的方法示例【存储文本与图片】
2017/09/15 PHP
PHP实现字符串大小写转函数的功能实例
2019/02/06 PHP
使用laravel和ECharts实现折线图效果的例子
2019/10/09 PHP
jQuery实现原理的模拟代码 -6 代码下载
2010/08/16 Javascript
SeaJS入门教程系列之完整示例(三)
2014/03/03 Javascript
Js冒泡事件详解及阻止示例
2014/03/21 Javascript
jQuery中insertBefore()方法用法实例
2015/01/08 Javascript
JS实现同一个网页布局滑动门和TAB选项卡实例
2015/09/23 Javascript
jquery实现跳到底部,回到顶部效果的简单实例(类似锚)
2016/07/10 Javascript
利用HTML5+Socket.io实现摇一摇控制PC端歌曲切换
2017/01/13 Javascript
jQuery查找和过滤_动力节点节点Java学院整理
2017/07/04 jQuery
vue 实现剪裁图片并上传服务器功能
2018/03/01 Javascript
基于python的Tkinter实现一个简易计算器
2015/12/31 Python
Django 路由控制的实现
2019/07/17 Python
如何通过python实现全排列
2020/02/11 Python
Python批量获取并保存手机号归属地和运营商的示例
2020/10/09 Python
python中scrapy处理项目数据的实例分析
2020/11/22 Python
python 获取剪切板内容的两种方法
2020/11/28 Python
有趣的睡衣和礼物:LazyOne
2019/11/27 全球购物
简述你对Statement,PreparedStatement,CallableStatement的理解
2013/03/25 面试题
最新的互联网创业计划书
2014/01/10 职场文书
工作会议主持词
2014/03/17 职场文书
文明市民先进事迹
2014/05/15 职场文书
宣传活动总结范文
2014/07/01 职场文书
党员个人对照检查材料范文
2014/09/24 职场文书
2014购房个人委托书范本
2014/10/12 职场文书
收入证明范本
2015/06/12 职场文书
单位提档介绍信
2015/10/22 职场文书
2019垃圾分类宣传口号汇总
2019/08/16 职场文书
MySQL实现用逗号进行拼接、以逗号进行分割
2022/12/24 MySQL