【原】thinkphp5 连接MySQL数据库

/ 0评 / 0

ThinkPHP内置了抽象数据库访问层,把不同的数据库操作封装起来,我们只需要使用公共的Db类进行操作,而无需针对不同的数据库写不同的代码和底层实现,Db类会自动调用相应的数据库驱动来处理。采用PDO方式,目前包含了Mysql、SqlServer、PgSQL、Sqlite等数据库的支持。(来自官网文档)1、首先在database.php中配置数据库的相关配置

return [
    // 数据库类型
    'type'            => 'mysql',
    // 服务器地址
    'hostname'        => '',
    // 数据库名
    'database'        => '',
    // 用户名
    'username'        => '',
    // 密码
    'password'        => '',
    // 端口
    'hostport'        => '',
    // 连接dsn
    'dsn'             => '',
    // 数据库连接参数
    'params'          => [],
    // 数据库编码默认采用utf8
    'charset'         => 'utf8',
    // 数据库表前缀
    'prefix'          => '',
    // 数据库调试模式
    'debug'           => true,
    // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
    'deploy'          => 0,
    // 数据库读写是否分离 主从式有效
    'rw_separate'     => false,
    // 读写分离后 主服务器数量
    'master_num'      => 1,
    // 指定从服务器序号
    'slave_no'        => '',
    // 自动读取主库数据
    'read_master'     => false,
    // 是否严格检查字段是否存在
    'fields_strict'   => true,
    // 数据集返回类型
    'resultset_type'  => 'array',
    // 自动写入时间戳字段
    'auto_timestamp'  => false,
    // 时间字段取出后的默认时间格式
    'datetime_format' => 'Y-m-d H:i:s',
    // 是否需要进行SQL性能分析
    'sql_explain'     => false,
];

配置信息也可以设置多个数据库连接信息,如下:

//数据库配置1
'db_config1' => [
// 数据库类型
'type' => 'mysql',
// 服务器地址
'hostname' => '',
// 数据库名
'database' => '',
//以下省略举例配置,如有需要可根据实际添加
],
//数据库配置2
'db_config2/ =>[
// 数据库类型
'type' => 'mysql',
// 服务器地址
'hostname' => '',
// 数据库名
'database' => '',
//以下省略举例配置,如有需要可根据实际添加
]

也可以在使用Db类的时候动态定义连接信息,如:

Db::connect([
// 数据库类型
'type' => 'mysql',
// 数据库连接DSN配置
'dsn' => '',
// 服务器地址
'hostname' => '',
// 数据库名
'database' => '',
// 数据库用户名
'username' => '',
// 数据库密码
'password' => '',
// 数据库连接端口
'hostport' => '',
// 数据库连接参数
'params' => [],
// 数据库编码默认采用utf8
'charset' => 'utf8',
// 数据库表前缀
'prefix' => '',
]);

或者直接使用字符串的方式:

Db::connect('mysql://root:1234@127.0.0.1:3306/thinkphp#utf8');

定义格式为:    数据库类型:/用户名:密码@数据库地址:端口号/数据库名:字符集不过字符串方式有许多参数无法定义,建议直接更改配置文件比较方便。注意:如果在模型中使用了

protected $connection =[];

属性的话,则会在操作该模型时自动连接到数据库,且以此属性中定义的连接信息连接,而不会调用配置文件中

2.基本使用定义好了上面所说的连接信息之后,就可以进行数据库操作了。支持query(查询操作)和execute(写入操作)方法,并且支持参数绑定。

Db::query('select * from information ');
Db::execute('insert into information (id, name) values (?, ?)',[4,'张三']);

如需使用不同数据库配置参数,可使用:

Db::connect($config1)->query('select * from information');

$config1 就是数据库配置1,前面有举例。3.查询构造器   

(1)查询数据    如需查询一个数据可使用:

// table方法必须指定完整的数据表名
Db::table('information')->where('id',1)->find();

如果find方法查询不到结果,则返回null查询数据集使用:

Db::table('think_user')->where('status',1)->select();

如果select方法查询不到结果,则返回空数组   

(2)添加数据添加一条数据

$data = ['id' => '6','name' => '张三'];
Db::table('information')->insert($data);

(3)更新数据更新一条数据:

Db::table('information')->where('id', 1)->update(['name' => '李四']);

update方法更新成功返回受到影响的行数,没有更新返回0。   

(4)删除数据删除表中数据:

// 根据主键删除
Db::table('information')->delete(1);
Db::table('information')->delete([1,2,3]);
// 条件删除
Db::table('information')->where('id',1)->delete();
Db::table('information')->where('id','<',10)->delete();

delete 方法返回影响数据的条数,没有删除返回 0

以上是博主在学习过程中遇到的一些小方法,如果错误请指正,如需了解更详细的内容,请参考thinkphp5官方文档。