實(shí)現(xiàn)PHP框架系列文章(6)mysql數(shù)據(jù)庫方法
實(shí)現(xiàn)一個mysql數(shù)據(jù)庫封裝需要考慮的問題
1.使用方便性
采用直接sql語句操作方式。只要會寫sql語句,那么將沒有其他學(xué)習(xí)成本。
uctphp框架提供的dba輔助封裝類,用會之后將愛不釋手。
使用前需要顯示初始化并連接到數(shù)據(jù)庫嗎,當(dāng)然不需要。
直到執(zhí)行第一條sql語句之前,都不會去連接數(shù)據(jù)庫,甚至不會new一個db對象。
dba將會在合適的時機(jī)去連接數(shù)據(jù)庫并執(zhí)行初始化字符編碼操作。
查詢語句。不需要new一個查詢構(gòu)造器也不提供鏈?zhǔn)讲僮鞣绞剑菢訌?fù)雜且低效。
dba提供了以下的查詢輔助函數(shù)。
//讀一個值 Dba::readOne($sql); //讀一行 Dba::readRowAssoc($sql); //讀所有行 Dba::readAllAssoc($sql); //讀所有行的第一列 Dba::readAllOne($sql); //在實(shí)際業(yè)務(wù)場景中,經(jīng)常會有分頁讀取部分?jǐn)?shù)據(jù)的情況。 //只要一個函數(shù)即可返回指定頁碼的數(shù)據(jù)內(nèi)容和數(shù)據(jù)總條數(shù) Dba::readCountAndLimit($sql, $page, $limit);
ps:以上部分函數(shù)可以提供一個map函數(shù)對返回?cái)?shù)組的每一行進(jìn)行加工處理。
寫語句。為什么要區(qū)分read和write呢,顯然可以擴(kuò)展做到控制讀寫分離,雙寫等功能。
在有各種云數(shù)據(jù)庫和數(shù)據(jù)庫中間件的今天,在數(shù)據(jù)庫層實(shí)現(xiàn)是更好的選擇。
Dba::write($sql); /* 直接插入或更新kv形式的array數(shù)組 會自動對value進(jìn)行轉(zhuǎn)義,也支持array類型的值。 如果自己寫sql語句要注意使用addslashes或mysql_real_escape_string來保證安全 */ Dba::insert($table, $insert); Dba::update($table, $update, $where); /* 對批量插入數(shù)據(jù)有更高的效率 當(dāng)然過多的行數(shù)應(yīng)該用array_chunk來分批插入。 */ Dba::insertS($table, $inserts);
2. 事務(wù)
使用pdo支持事務(wù)
Dba::beginTransaction(); Dba::commit(); Dba::rollBack();
3. 長時間運(yùn)行
在一些需要長時間運(yùn)行的場景如swoole服務(wù),后臺worker等,可能會出現(xiàn)數(shù)據(jù)庫連接超時的情況。
當(dāng)發(fā)現(xiàn)數(shù)據(jù)庫連接超時,dba將會自動嘗試重連。
以上內(nèi)容是小編給大家介紹的PHP框架系列文章(6)mysql數(shù)據(jù)庫方法,希望對大家有所幫助!
- ThinkPHP關(guān)聯(lián)模型操作實(shí)例分析
- PHP實(shí)現(xiàn)MVC開發(fā)得最簡單的方法——模型
- ThinkPHP實(shí)例化模型的四種方法概述
- thinkphp視圖模型查詢提示ERR: 1146:Table ''db.pr_order_view'' doesn''t exist的解決方法
- 最新的php 文件上傳模型,支持多文件上傳
- PHP開發(fā)框架Laravel數(shù)據(jù)庫操作方法總結(jié)
- PHP的Yii框架中使用數(shù)據(jù)庫的配置和SQL操作實(shí)例教程
- PHP的Laravel框架結(jié)合MySQL與Redis數(shù)據(jù)庫的使用部署
- ThinkPHP框架分布式數(shù)據(jù)庫連接方法詳解
- 自制PHP框架之模型與數(shù)據(jù)庫
相關(guān)文章
Laravel框架實(shí)現(xiàn)超簡單的分頁效果示例
這篇文章主要介紹了Laravel框架實(shí)現(xiàn)超簡單的分頁效果,結(jié)合實(shí)例形式分析了Laravel框架實(shí)現(xiàn)分頁功能的相關(guān)控制器、視圖、模板調(diào)用等相關(guān)操作技巧,需要的朋友可以參考下2019-02-02
thinkPHP5.0框架引入Traits功能實(shí)例分析
這篇文章主要介紹了thinkPHP5.0框架引入Traits功能,結(jié)合實(shí)例形式分析了Traits的概念、功能及thinkPHP5.0中Traits功能的使用方法,需要的朋友可以參考下2017-03-03
php獲取目標(biāo)函數(shù)執(zhí)行時間示例
這篇文章主要介紹了php獲取目標(biāo)函數(shù)執(zhí)行時間示例,需要的朋友可以參考下2014-03-03
Zend Framework處理Json數(shù)據(jù)方法詳解
這篇文章主要介紹了Zend Framework處理Json數(shù)據(jù)方法,結(jié)合實(shí)例形式分析了zend framework針對json相關(guān)操作類的使用方法,需要的朋友可以參考下2016-12-12
php calender(日歷)二個版本代碼示例(解決2038問題)
一個簡單的php Calender(日歷),解決了2038問題,這樣在32位機(jī)和64位機(jī)上都可以用了,代碼很簡單,方便修改2013-12-12

