实现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开发过程中常用函数收藏
Dec 14 PHP
PHP Socket 编程
Apr 09 PHP
用PHP+MySQL搭建聊天室功能实例代码
Aug 20 PHP
php 模拟 asp.net webFrom 按钮提交事件的思路及代码
Dec 02 PHP
跟我学Laravel之配置Laravel
Oct 15 PHP
PHP文件及文件夹操作之创建、删除、移动、复制
Jul 13 PHP
php中get_magic_quotes_gpc()函数说明
Feb 06 PHP
Yii2汉字转拼音类的实例代码
Apr 18 PHP
PHP从数组中删除元素的四种方法实例
May 12 PHP
Yii 2.0在Grid中格式化时间方法示例
Jun 06 PHP
深入浅析安装PhpStorm并激活的步骤详解
Sep 17 PHP
PHP基于进程控制函数实现多线程
Dec 09 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
建立文件交换功能的脚本(二)
2006/10/09 PHP
PHP数组操作类实例
2015/07/11 PHP
php+ajax无刷新分页实例详解
2015/12/07 PHP
Symfony的安装和配置方法
2016/03/17 PHP
使用JavaScript创建新样式表和新样式规则
2016/06/14 PHP
php注册审核重点解析(数据访问)
2017/05/23 PHP
php变量与JS变量实现不通过跳转直接交互的方法
2017/08/25 PHP
php实现等比例压缩图片
2018/07/26 PHP
用PHP做了一个领取优惠券活动的示例代码
2019/07/05 PHP
laravel框架创建授权策略实例分析
2019/11/22 PHP
jQuery 1.0.4 - New Wave Javascript(js源文件)
2007/01/15 Javascript
jquery遍历input取得input的name
2009/04/27 Javascript
解决jQuery插件tipswindown与hintbox冲突
2010/11/05 Javascript
取得窗口大小 兼容所有浏览器的js代码
2011/08/09 Javascript
详解vue-cli3多页应用改造
2019/06/04 Javascript
基于小程序请求接口wx.request封装的类axios请求
2020/07/02 Javascript
JS实现简单贪吃蛇小游戏
2020/10/28 Javascript
[01:01:36]Optic vs paiN 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
在Python中使用模块的教程
2015/04/27 Python
Python验证码识别处理实例
2015/12/28 Python
Python字符串切片操作知识详解
2016/03/28 Python
python如何将图片转换为字符图片
2020/08/19 Python
python爬虫获取百度首页内容教学
2018/12/23 Python
Django框架搭建的简易图书信息网站案例
2019/05/25 Python
python打印9宫格、25宫格等奇数格 满足横竖斜相加和相等
2019/07/19 Python
简单易懂Pytorch实战实例VGG深度网络
2019/08/27 Python
Python 3 使用Pillow生成漂亮的分形树图片
2019/12/24 Python
python实现ip地址的包含关系判断
2020/02/07 Python
HTML5实现简单图片上传所遇到的问题及解决办法
2016/01/20 HTML / CSS
Under Armour安德玛荷兰官网:美国高端运动科技品牌
2019/07/10 全球购物
就业推荐表自我鉴定
2013/10/29 职场文书
贷款委托书范本
2014/04/08 职场文书
道路交通事故人身损害赔偿协议书
2014/11/19 职场文书
Java基础之线程锁相关知识总结
2021/06/30 Java/Android
手把手教你使用TensorFlow2实现RNN
2021/07/15 Python
详解Golang如何实现支持随机删除元素的堆
2022/09/23 Python