# 連接數據庫
框架可以支持MySQL, MSSQL, SQLite, MariaDB, Oracle, Sybase, PostgreSQL數據庫。**本文檔將以MySQL作為示例講解**。
<br/><br/>
## 配置數據庫連接信息
在/Lib/config.php中配置數據庫連接信息,前臺、后臺等不同入口的應用只需要配置了這一個地方就可以了。
無論連接何種數據庫,只需要將配置信息放在數組中并賦值給'DB',框架就可以通過'DB'調用數據庫了。
~~~
//MYSQL
'DB' => array(
'database_type' => 'mysql', //數據庫類型
'database_name' => 'name', //庫名
'server' => 'localhost', //服務器地址
'username' => 'your_username', //連接賬號
'password' => 'your_password', //連接密碼
),
~~~
~~~
//SQLITE
'DB' => array(
'database_type' => 'SQLite', //數據庫類型
'database_file' => 'magphp_sqlite3.db', //SQLITE數據庫文件路徑
),
~~~
<br/><br/>
## 覆蓋數據庫配置
如果您需要在不同應用中配置不同的數據庫信息,您可以在應用目錄下Lib/config.php中覆蓋'DB'這個數組變量的值。
例如:
除了默認的app應用,數據庫表為appdb,還有個news資訊應用,數據庫表為newsdb。
app應用使用 /Lib/config.php 中的數據庫配置。
而 /app/Lib/config.php 中**無'DB'這個配置**。
這時app應用中將會調用appdb這個數據庫。
~~~
// /Lib/config.php
// MYSQL
'DB' => array(
'database_type' => 'mysql', //數據庫類型
'database_name' => 'appdb', //庫名
'server' => 'localhost', //服務器地址
'username' => 'webuser', //連接賬號
'password' => 'webuser_password', //連接密碼
),
~~~
news應用使用 /news/Lib/config.php 中的數據庫配置。
這時news應用中將會調用newsdb這個數據庫。
~~~
// /news/Lib/config.php
// MYSQL
'DB' => array(
'database_type' => 'mysql', //數據庫類型
'database_name' => 'newsdb', //庫名
'server' => 'localhost', //服務器地址
'username' => 'newsuser', //連接賬號
'password' => 'newsuser_password', //連接密碼
),
~~~
<br/><br/>
## 鏈接數據庫
講過以上配置后,我們就可以在 控制器Controller 和 Model 中連接數據庫。
框架提供了 DB() 方法獲得一個實例化的數據庫類。
例:在控制器Controller中連接數據庫
~~~
class IndexController extends Controller{
public function index(){
$db = DB(); //連接數據庫,獲得數據庫類實例
$userlist = $db->select('users','*'); //取得所有用戶信息
}
}
~~~
例:在模型Model中連接數據庫
~~~
//用戶模型
class UserModel extends Model{
//獲得所有用戶
public function userlist(){
$db = DB(); //連接數據庫,獲得數據庫類實例
$userlist = $db->select('users','*'); //取得所有用戶信息
return $userlist;
}
}
~~~
<br/><br/>
## 動態鏈接數據庫 (不推薦)
有時我們需要臨時調用其他數據庫中的信息,我們就可以將這個數據庫配置信息數組傳遞給DB()方法。
~~~
class IndexController extends Controller{
public function index(){
//創建數據庫配置
$dbconfig = array(
'database_type' => 'mysql',
'database_name' => 'goods',
'server' => 'localhost',
'username' => 'goodsuser',
'password' => 'goodspass',
);
//使用DB()方法,并傳入數據庫配置參數,得到實例化數據庫類。
$db = DB($dbconfig);
}
}
~~~