欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

實現(xiàn)PHP框架系列文章(6)mysql數(shù)據(jù)庫方法

 更新時間:2016年03月04日 09:22:15   作者:yyluming  
這篇文章主要介紹了實現(xiàn)PHP框架系列文章(6)mysql數(shù)據(jù)庫方法的相關(guān)資料,需要的朋友可以參考下

實現(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);
//在實際業(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ù)對返回數(shù)組的每一行進(jìn)行加工處理。

寫語句。為什么要區(qū)分read和write呢,顯然可以擴(kuò)展做到控制讀寫分離,雙寫等功能。

在有各種云數(shù)據(jù)庫和數(shù)據(jù)庫中間件的今天,在數(shù)據(jù)庫層實現(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ù)庫方法,希望對大家有所幫助!

相關(guān)文章

最新評論