# 连接数据库
框架可以支持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);
}
}
~~~