實現乙個mysql資料庫封裝需要考慮的問題
1.使用方便性
採用直接sql語句操作方式。只要會寫sql語句,那麼將沒有其他學習成本。
uctphp框架提供的dba輔助封裝類,用會之後將愛不釋手。
使用前需要顯示初始化並連線到資料庫嗎,當然不需要。
直到執行第一條sql語句之前,都不會去連線資料庫,甚至不會new乙個db物件。
dba將會在合適的時機去連線資料庫並執行初始化字元編碼操作。
查詢語句。不需要new乙個查詢構造器也不提供鏈式操作方式,那樣複雜且低效。
dba提供了以下的查詢輔助函式。
//讀乙個值
dba::readone($sql);
//讀一行
dba::readrowassoc($sql);
//讀所有行
dba::readallassoc($sql);
//讀所有行的第一列
dba::readallone($sql);
//在實際業務場景中,經常會有分頁讀取部分資料的情urcepgbbo況。
//只要乙個函式即可返回指定頁碼的資料內容和資料總條數
dba::rwww.cppcns.comeadcounwww.cppcns.comtandlwww.cppcns.comimit($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將會自動嘗試重連。
本文位址:
mysql資料庫優化6 Mysql 資料庫優化6
1 為什麼索引能提高查詢效率 因為建立了索引的字段的資料都是有序資料,查詢有序資料無需遍歷整個資料,非常快,理解這一點是非常重要滴!2 索引的設計原則 1 唯一性索引。建立唯一性索引可以更快的檢索出資料,如學生表中學號是唯一的,將學號字段建立索引可以很快的確定某條記錄。2 為經常需要排序 分組 連線...
php連線mysql資料庫最簡單的實現方法
在連線mysql資料庫之前,您必須指定以下資訊 mysql資料庫名稱 表示要連線的資料庫的名稱。使用者名稱和密碼 指定用於連線mysql資料庫伺服器的mysql使用者的使用者名稱和密碼。該帳戶必須具有足夠的許可權才能訪問上面指定的資料庫。我們將使用 本地mysql資料庫伺服器,這樣dsn是local...
php實現mysql資料庫備份類
1 例項化dbbak需要告訴它兩件事 資料伺服器在 connectid 備份到哪個目錄 backupdir require once dbbak.php require once tablebak.php connectid mysql connect localhost root 123456 b...