實作一個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. 長時間可能會出現資料庫連線逾時的情況。
以上就介紹了實作PHP框架系列文章6mysql資料庫方法,包含了方面的內容,希望對PHP教學有興趣的朋友有幫助。