本文實例匯總了ThinkPHP連接資料庫的幾種常用方式。分享給大家供大家參考。具體如下:
ThinkPHP內建了抽象資料庫存取層,把不同的資料庫操作封裝起來,我們只需要使用公共的Db類別進行操作,而無需針對不同的資料庫寫不同的程式碼和底層實現, Db類會自動呼叫對應的資料庫適配器來處理,目前的資料庫包括Mysql、MsSQL、PgSQL、Sqlite、Oracle、Ibase以及PDO的支持,如果應用需要使用資料庫,必須配置資料庫連接訊息,資料庫的設定檔有多種定義方式:
第一種、在專案設定檔裡面定義
#程式碼如下:
return array( 'DB_TYPE'=> 'mysql', 'DB_HOST'=> 'localhost', 'DB_NAME'=>'thinkphp', 'DB_USER'=>'root', 'DB_PWD'=>'', 'DB_PORT'=>'3306', 'DB_PREFIX'=>'think_', // 其他项目配置参数……… );
系統推薦使用該種方式,因為一般一個項目的資料庫存取配置是相同的,該方法系統在連接資料庫的時候會自動獲取,無需手動連接。
可以對每個項目定義不同的資料庫連接信息,還可以在調試配置文件(Conf/debug.php)裡面定義調試數據庫的配置信息,如果在項目配置文件和調試模式配置文件裡面同時定義了資料庫連接訊息,那麼在調試模式下面後者生效,部署模式下面前者生效。
相關推薦:《ThinkPHP教學》
#第二種、使用DSN方式在初始化Db類別的時候傳參數
程式碼如下:
$db_dsn = "mysql://username:passwd@localhost:3306/DbName"; $db = new Db($db_dsn);
此方式主要用於在控制器內自己手動連接資料庫的情況,或用於建立多個資料庫連線。
第三種、使用陣列傳參數
程式碼如下:
$DSN = array( 'dbms' => 'mysql', 'username' => 'username', 'password' => 'password', 'hostname' => 'localhost', 'hostport' => '3306', 'database' => 'dbname' ); $db = new Db($DSN);
該方式也是用於手動連接資料庫的情況,或用於建立多個資料庫連線。
第四種、在模型類別裡面定義
程式碼如下:
protected $connection = array( 'dbms' => 'mysql', 'username' => 'username', 'password' => 'password', 'hostname' => 'localhost', 'hostport' => '3306', 'database' => 'dbname' ); // 或者使用下面的定义 protected $connection = "mysql://username:passwd@localhost:3306/DbName";
如果在某個模型類別裡面定義了connection屬性,則在實例化模型物件的時候,會使用該資料庫連接資訊進行資料庫連接,通常用於某些資料表位於目前資料庫連接之外的其它資料庫。
ThinkPHP不是一開始就會連接資料庫,而是在有資料查詢操作的時候才會去連接資料庫,額外的情況是,在系統第一次操作模型的時候,框架會自動連接資料庫取得相關模型類別的資料欄位信息,並快取下來。
(欄位快取目錄:Runtime/Data/_fields)
ThinkPHP支援PDO方式,如果要使用PDO方式連接資料庫,可以參考下面的設定。
我們以專案設定檔定義為例來說明:
程式碼如下:
return array( 'DB_TYPE'=> 'pdo', // 注意DSN的配置针对不同的数据库有所区别 请参考PHP手册PDO类库部分 'DB_DSN'=> 'mysql:host=localhost;dbname=think', 'DB_USER'=>'root', 'DB_PWD'=>'', 'DB_PREFIX'=>'think_', // 其他项目配置参数……… );
使用PDO方式的時候,要注意檢查是否開啟相關的PDO模組,DB_DSN參數只對PDO方式連線才有效。
以上是thinkphp怎麼連接資料庫的詳細內容。更多資訊請關注PHP中文網其他相關文章!