1. 简单说明

  1. 配置文件的位置是 config\datebase.php。
  2. 注意 hostname:如果是Linux 、MacOS操作系统 填写127.0.0.1 将无效,必须填写localhost
  3. 我们需要用到这几个文件中的类
    • Db.php
      • 位置:项目名称 /thinkphp/library/think/Db.php
      • 这个类它是数据库的入口
      • use think\db\Connection; 带表它使用了该命名空间下的驱动….
      • Db类静态代用Query类中的方法。 query类的 namespace :\think\db\Query
    • Query.php
      • 绝大多数的数据库操作方法都在这个类中

2. 配置文件连接数据库

2.1 全局配置

写入数据库的全局配置信息
image.png

调试debug模式
image.png

控制器:

  1. <?php
  2. namespace app\database\controller;
  3. use think\Db;
  4. class Conn
  5. {
  6. // 使用全局配置信息连接数据库
  7. public function conn1 ()
  8. {
  9. return Db::table('wh_build')
  10. ->where('IDX', '=', 12)
  11. ->value('BUILDNAME');
  12. }
  13. }

postman 测试:
image.png

2.2 动态配置

需要使用 Query 类的 connection() 方法,为了使配置更加清晰,我在数据库的配置文件下单独写入配置信息

database.php

  1. <?php
  2. // 数据库配置1
  3. 'db_config1' => [
  4. // 数据库类型
  5. 'type' => 'mysql',
  6. // 服务器地址
  7. 'hostname' => 'localhost',
  8. // 数据库名
  9. 'database' => 'e_ort',
  10. // 用户名
  11. 'username' => 'root',
  12. // 密码
  13. 'password' => 'wide',
  14. // 端口
  15. 'hostport' => '3306',
  16. // 数据库编码默认采用utf8
  17. 'charset' => 'utf8',
  18. ],

控制器:

  1. <?php
  2. // 动态连接数据库
  3. public function conn2() {
  4. try {
  5. $res = Db::connect('db_config1')
  6. ->table('wh_build')
  7. ->where('IDX', '=', 13)
  8. ->value('BUILDNAME');
  9. } catch (Exception $e) {
  10. return 'conn fail';
  11. }
  12. return is_null($res) === false ? json($res) : '没有查到数据!';
  13. }

postman 测试:
image.png

2.3 DSN连接

1. 同上先在数据库的全局配置文件中填写配置项信息

  1. <?php
  2. //数据库配置2
  3. 'db_config2' => 'mysql://root:wide@127.0.0.1:3306/e_ort#utf8',
  4. // 数据库类型://username:password@hostIP:port/db_name#charset;


2. 测试代码**

  1. <?php
  2. // 3.DSN 连接配置数据库
  3. public function conn3()
  4. {
  5. $res = Db::connect('db_config2')
  6. ->table('wh_build')
  7. ->where('IDX', '=', 16)
  8. ->value('BUILDNAME');
  9. return is_null($res) === false ? json_encode($res) : '没有查到数据!';
  10. }

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 单独的模块配置项

除了全局配置外,还可以对单独的某一个模块进行配置

3.5 断线重连

3.6 数据库调试模式