1. 简单说明
- 配置文件的位置是 config\datebase.php。
- 注意 hostname:如果是Linux 、MacOS操作系统 填写127.0.0.1 将无效,必须填写localhost
- 我们需要用到这几个文件中的类
- Db.php
- 位置:项目名称 /thinkphp/library/think/Db.php
- 这个类它是数据库的入口
- use think\db\Connection; 带表它使用了该命名空间下的驱动….
- Db类静态代用Query类中的方法。 query类的 namespace :
\think\db\Query
- Query.php
- 绝大多数的数据库操作方法都在这个类中
- Db.php
2. 配置文件连接数据库
2.1 全局配置
写入数据库的全局配置信息
调试debug模式
控制器:
<?php
namespace app\database\controller;
use think\Db;
class Conn
{
// 使用全局配置信息连接数据库
public function conn1 ()
{
return Db::table('wh_build')
->where('IDX', '=', 12)
->value('BUILDNAME');
}
}
postman 测试:
2.2 动态配置
需要使用 Query 类的 connection() 方法,为了使配置更加清晰,我在数据库的配置文件下单独写入配置信息
database.php
<?php
// 数据库配置1
'db_config1' => [
// 数据库类型
'type' => 'mysql',
// 服务器地址
'hostname' => 'localhost',
// 数据库名
'database' => 'e_ort',
// 用户名
'username' => 'root',
// 密码
'password' => 'wide',
// 端口
'hostport' => '3306',
// 数据库编码默认采用utf8
'charset' => 'utf8',
],
控制器:
<?php
// 动态连接数据库
public function conn2() {
try {
$res = Db::connect('db_config1')
->table('wh_build')
->where('IDX', '=', 13)
->value('BUILDNAME');
} catch (Exception $e) {
return 'conn fail';
}
return is_null($res) === false ? json($res) : '没有查到数据!';
}
postman 测试:
2.3 DSN连接
1. 同上先在数据库的全局配置文件中填写配置项信息
<?php
//数据库配置2
'db_config2' => 'mysql://root:wide@127.0.0.1:3306/e_ort#utf8',
// 数据库类型://username:password@hostIP:port/db_name#charset;
2. 测试代码**
<?php
// 3.DSN 连接配置数据库
public function conn3()
{
$res = Db::connect('db_config2')
->table('wh_build')
->where('IDX', '=', 16)
->value('BUILDNAME');
return is_null($res) === false ? json_encode($res) : '没有查到数据!';
}
3. 其他补充说明
3.1 type的配置说明
type | 数据库 |
---|---|
mysql |
Mysql |
sqlite |
SqLite |
pgsql |
PgSQL |
sqlsrv |
SqlServer |
这其中是没有oracle数据库的,如果需要可以自己建立 工具类,调用静态方法进行查询**
3.2 连接说明
如果我们将 2.2 , 2.3中的配置信息写到方法中的话,那么仅仅在调用的时候会执行一次,也就是说一次生效
3.3 其他配置项说明
参数名 | 描述 | 默认值 |
---|---|---|
type |
数据库类型 | 无 |
hostname |
数据库地址 | 127.0.0.1 |
database |
数据库名称 | 无 |
username |
数据库用户名 | 无 |
password |
数据库密码 | 无 |
hostport |
数据库端口号 | 无 |
dsn |
数据库连接dsn信息 | 无 |
params |
数据库连接参数 | 空 |
charset |
数据库编码 | utf8 |
prefix |
数据库的表前缀 | 无 |
debug |
是否调试模式 | false |
deploy |
数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器) | 0 |
rw_separate |
数据库读写是否分离 主从式有效 | false |
master_num |
读写分离后 主服务器数量 | 1 |
slave_no |
指定从服务器序号 | 无 |
fields_strict |
是否严格检查字段是否存在 | true |
resultset_type |
数据集返回类型 | array |
auto_timestamp |
自动写入时间戳字段 | false |
sql_explain |
是否需要进行SQL性能分析 开启调试有效 | false |
query |
指定查询对象 | think\db\Query |
3.4 单独的模块配置项
除了全局配置外,还可以对单独的某一个模块进行配置