實(shí)現(xiàn)PHP框架系列文章(6)mysql數(shù)據(jù)庫(kù)方法
實(shí)現(xiàn)一個(gè)mysql數(shù)據(jù)庫(kù)封裝需要考慮的問(wèn)題
1.使用方便性
采用直接sql語(yǔ)句操作方式。只要會(huì)寫sql語(yǔ)句,那么將沒(méi)有其他學(xué)習(xí)成本。
uctphp框架提供的dba輔助封裝類,用會(huì)之后將愛(ài)不釋手。
使用前需要顯示初始化并連接到數(shù)據(jù)庫(kù)嗎,當(dāng)然不需要。
直到執(zhí)行第一條sql語(yǔ)句之前,都不會(huì)去連接數(shù)據(jù)庫(kù),甚至不會(huì)new一個(gè)db對(duì)象。
dba將會(huì)在合適的時(shí)機(jī)去連接數(shù)據(jù)庫(kù)并執(zhí)行初始化字符編碼操作。
查詢語(yǔ)句。不需要new一個(gè)查詢構(gòu)造器也不提供鏈?zhǔn)讲僮鞣绞?,那樣?fù)雜且低效。
dba提供了以下的查詢輔助函數(shù)。
//讀一個(gè)值 Dba::readOne($sql); //讀一行 Dba::readRowAssoc($sql); //讀所有行 Dba::readAllAssoc($sql); //讀所有行的第一列 Dba::readAllOne($sql); //在實(shí)際業(yè)務(wù)場(chǎng)景中,經(jīng)常會(huì)有分頁(yè)讀取部分?jǐn)?shù)據(jù)的情況。 //只要一個(gè)函數(shù)即可返回指定頁(yè)碼的數(shù)據(jù)內(nèi)容和數(shù)據(jù)總條數(shù) Dba::readCountAndLimit($sql, $page, $limit);
ps:以上部分函數(shù)可以提供一個(gè)map函數(shù)對(duì)返回?cái)?shù)組的每一行進(jìn)行加工處理。
寫語(yǔ)句。為什么要區(qū)分read和write呢,顯然可以擴(kuò)展做到控制讀寫分離,雙寫等功能。
在有各種云數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)中間件的今天,在數(shù)據(jù)庫(kù)層實(shí)現(xiàn)是更好的選擇。
Dba::write($sql); /* 直接插入或更新kv形式的array數(shù)組 會(huì)自動(dòng)對(duì)value進(jìn)行轉(zhuǎn)義,也支持array類型的值。 如果自己寫sql語(yǔ)句要注意使用addslashes或mysql_real_escape_string來(lái)保證安全 */ Dba::insert($table, $insert); Dba::update($table, $update, $where); /* 對(duì)批量插入數(shù)據(jù)有更高的效率 當(dāng)然過(guò)多的行數(shù)應(yīng)該用array_chunk來(lái)分批插入。 */ Dba::insertS($table, $inserts);
2. 事務(wù)
使用pdo支持事務(wù)
Dba::beginTransaction(); Dba::commit(); Dba::rollBack();
3. 長(zhǎng)時(shí)間運(yùn)行
在一些需要長(zhǎng)時(shí)間運(yùn)行的場(chǎng)景如swoole服務(wù),后臺(tái)worker等,可能會(huì)出現(xiàn)數(shù)據(jù)庫(kù)連接超時(shí)的情況。
當(dāng)發(fā)現(xiàn)數(shù)據(jù)庫(kù)連接超時(shí),dba將會(huì)自動(dòng)嘗試重連。
以上內(nèi)容是小編給大家介紹的PHP框架系列文章(6)mysql數(shù)據(jù)庫(kù)方法,希望對(duì)大家有所幫助!
- ThinkPHP關(guān)聯(lián)模型操作實(shí)例分析
- PHP實(shí)現(xiàn)MVC開發(fā)得最簡(jiǎn)單的方法——模型
- ThinkPHP實(shí)例化模型的四種方法概述
- thinkphp視圖模型查詢提示ERR: 1146:Table ''db.pr_order_view'' doesn''t exist的解決方法
- 最新的php 文件上傳模型,支持多文件上傳
- PHP開發(fā)框架Laravel數(shù)據(jù)庫(kù)操作方法總結(jié)
- PHP的Yii框架中使用數(shù)據(jù)庫(kù)的配置和SQL操作實(shí)例教程
- PHP的Laravel框架結(jié)合MySQL與Redis數(shù)據(jù)庫(kù)的使用部署
- ThinkPHP框架分布式數(shù)據(jù)庫(kù)連接方法詳解
- 自制PHP框架之模型與數(shù)據(jù)庫(kù)
相關(guān)文章
2個(gè)比較經(jīng)典的PHP加密解密函數(shù)分享
這篇文章主要介紹了2個(gè)比較經(jīng)典的PHP加密解密函數(shù)分享,一個(gè)是Discuz!的authcode加密函數(shù)(帶詳細(xì)分解),一個(gè)是encrypt()函數(shù),都比較經(jīng)典,需要的朋友可以參考下2014-07-07簡(jiǎn)單的php+mysql聊天室實(shí)現(xiàn)方法(附源碼)
這篇文章主要介紹了簡(jiǎn)單的php+mysql聊天室實(shí)現(xiàn)方法,詳細(xì)介紹了數(shù)據(jù)庫(kù),框架頁(yè)面,登錄及信息的發(fā)布、展示功能實(shí)現(xiàn)技巧,并附帶了完整源碼供讀者下載參考,需要的朋友可以參考下2016-01-01Laravel實(shí)現(xiàn)構(gòu)造函數(shù)自動(dòng)依賴注入的方法
這篇文章主要介紹了Laravel實(shí)現(xiàn)構(gòu)造函數(shù)自動(dòng)依賴注入的方法,涉及Laravel構(gòu)造函數(shù)自動(dòng)初始化的相關(guān)技巧,需要的朋友可以參考下2016-03-03php arsort 數(shù)組降序排序詳細(xì)介紹
php arsort函數(shù)用于將數(shù)組中的元素按照降序進(jìn)行排序,如果排序成功則返回true,否則返回false,本文章向大家講解arsort函數(shù)的基本語(yǔ)法及使用實(shí)例,需要的朋友可以參考下2016-11-11實(shí)現(xiàn)獲取http內(nèi)容的php函數(shù)分享
這篇文章主要介紹了實(shí)現(xiàn)獲取http內(nèi)容的php函數(shù),現(xiàn)在分享給大家,需要的朋友可以看一下2014-02-02PHP新特性之字節(jié)碼緩存和內(nèi)置服務(wù)器
這篇文章主要介紹了PHP新特性之字節(jié)碼緩存和內(nèi)置服務(wù)器的相關(guān)資料,需要的朋友可以參考下2017-08-08destoon實(shí)現(xiàn)商鋪管理主頁(yè)設(shè)置增加新菜單的方法
這篇文章主要介紹了destoon實(shí)現(xiàn)商鋪管理主頁(yè)設(shè)置增加新菜單的方法,需要的朋友可以參考下2014-06-06百萬(wàn)級(jí)別知乎用戶數(shù)據(jù)抓取與分析之PHP開發(fā)
這篇文章主要介紹了百萬(wàn)級(jí)別知乎用戶數(shù)據(jù)抓取與分析之PHP開發(fā)的相關(guān)資料,需要的朋友可以參考下2015-09-09