摘要:手冊中數據庫擴展一章有兩部分數據庫抽象層針對各數據庫系統對應的擴展,已經是足夠的說明了,要更深刻的理解可去研讀。首先,直接的想法是,應該為不同的數據庫實現不同的數據庫抽象層,調用客戶端庫來使用。
PHP/MySQL是主流的應用開發搭配方式,印象中PHP支持使用很多種數據庫,而且MySQL就有mysql、mysqli、pdo三種API可用。本文旨在從PHP數據庫訪問設計的思路為軸,簡單的捋清這些關系。
PHP手冊中《數據庫擴展》一章有兩部分:數據庫抽象層、針對各數據庫系統對應的擴展,已經是足夠的說明了,要更深刻的理解可去研讀。
首先,直接的想法是,PHP應該為不同的數據庫實現不同的數據庫抽象層,調用客戶端庫API來使用DBMS。如下圖:
然后,考慮這個場景:當PHP應用寫好后,環境數據庫不同時,就要用對應的數據庫抽象層重寫項目所有數據庫相關代碼。所以能否把訪問抽象出來,用不同數據庫時,只要切換不同實現就ok了。如下圖:
最后,主流選用MySQL當然是既可以使用mysql、mysqli兩種數據庫抽象層,又可以使用PDO數據訪問抽象層(須安裝PDO_MYSQL擴展實現PDO接口)。如下圖:
當然任何一個數據庫抽象層,都要在PHP編譯時都要指定數據庫的客戶端庫以使用數據庫服務器。以MySQL為例,推薦用mysqlnd庫,配置項:
--with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-mysql=mysqlnd
現在是不是清晰些了呢?
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/30333.html
摘要:手冊中數據庫擴展一章有兩部分數據庫抽象層針對各數據庫系統對應的擴展,已經是足夠的說明了,要更深刻的理解可去研讀。首先,直接的想法是,應該為不同的數據庫實現不同的數據庫抽象層,調用客戶端庫來使用。 PHP/MySQL是主流的應用開發搭配方式,印象中PHP支持使用很多種數據庫,而且MySQL就有mysql、mysqli、pdo三種API可用。本文旨在從PHP數據庫訪問設計的思路為軸,簡單的...
摘要:具體參考基于擴展實現真正的數據庫連接池方式三加上參考文檔參數化查詢為什么能夠防止注入 pdo防sql注入原理 PdoTest.php class PdoTest() { protected $db; protected $user; protected $pass; public function __construct($user = root,...
摘要:的毫秒級超時也有問題。。中超時實現一初級最簡單的超時實現秒級超時思路很簡單鏈接一個后端,然后設置為非阻塞模式,如果沒有連接上就一直循環,判斷當前時間和超時時間之間的差異。實際處理這個調用的部件在完成后,通過狀態通知和回調來通知調用者。 概述 在PHP開發中工作里非常多使用到超時處理到超時的場合,我說幾個場景: 異步獲取數據如果某個后端數據源獲取不成功則跳過,不影響整個頁面展現 為了保...
閱讀 3223·2021-11-23 09:51
閱讀 1030·2021-08-05 09:58
閱讀 663·2019-08-29 16:05
閱讀 971·2019-08-28 18:17
閱讀 3029·2019-08-26 14:06
閱讀 2721·2019-08-26 12:20
閱讀 2154·2019-08-26 12:18
閱讀 3064·2019-08-26 11:56