🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] * * * * * ## 1 文件 tp5的缓存驱动目录thinkphp\library\think\db\driver\ tp5通过PDO封装多种数据库驱动。 包含以下**6种** * * * * * 1 Mongo.php Mongo数据库驱动 2 Mysql.php Mysql数据库驱动 3 Oracle.php Oracle数据库驱动 4 Pgsql.php Pgsql数据库驱动 5 Sqlite.php Sqlite数据库驱动 6 Sqlsrv.php Sqlsrv数据库驱动 Driver.php 数据库驱动基类 * * * * * ## 2 数据库驱动 > 1 数据库配置 convention.php和application\database.php ~~~ 'database' => [ // 数据库类型 'type' => 'mysql', // 数据库连接DSN配置 'dsn' => '', // 服务器地址 'hostname' => 'localhost', // 数据库名 'database' => '', // 数据库用户名 'username' => 'root', // 数据库密码 'password' => '', // 数据库连接端口 'hostport' => '', // 数据库连接参数 'params' => [], // 数据库编码默认采用utf8 'charset' => 'utf8', // 数据库表前缀 'prefix' => '', // 数据库调试模式 'debug' => false, // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器) 'deploy' => 0, // 数据库读写是否分离 主从式有效 'rw_separate' => false, // 读写分离后 主服务器数量 'master_num' => 1, // 指定从服务器序号 'slave_no' => '', ], ~~~ 默认为mysql驱动 > 2 数据库初始化 thinkphp\library\think\Db.php中的connect() ~~~ if (!isset(self::$instances[$md5])) { $options = self::parseConfig($config); if (empty($options['type'])) { throw new Exception('db type error'); } $class = (!empty($options['namespace']) ? $options['namespace'] : '\\think\\db\\driver\\') . ucwords($options['type']); self::$instances[$md5] = new $class($options); APP_DEBUG && Log::record('[ DB ] INIT ' . $options['type'] . ':' . var_export($options, true), 'info'); } ~~~ 分析可知根据type选择不同数据库驱动进行初始化 ## 3 数据库驱动接口 > 1 Driver.php 1 构造函数 `public function __construct($config = ''){}` 2 连接与关闭 `public function connect($config = '', $linkNum = 0, $autoConnection = false){}` `public function close(){}` 3 语句的执行 `public function query($sql, $bind = [], $fetch = false, $master = false){}` `public function execute($sql, $bind = [], $fetch = false){}` 3 增删改查 `public function insert($data, $options = [], $replace = false){}` `public function select($options = []){}` `public function update($data, $options){}` `public function delete($options = []){}` `public function updateFieldAll($field,$pk,$dataSet,$operator = '=',$options = []){}` `public function insertAll($dataSet, $options = [], $replace = false){}` `public function selectInsert($fields, $table, $options = []){}` 4 sql语句解析 `public function buildSelectSql($options = []){}` `public function parseSql($sql, $options = []){}` `public function quote($str){}` `public function setModel($model){}` 5 事务操作 `public function startTrans(){}` `public function commit(){}` `public function rollback(){}` 6 操作结果查询 `public function getQueryTimes($execute = false){}` `public function getExecuteTimes(){}` `public function getLastSql($model = ''){}` `public function getLastInsID(){}` `public function getError(){}` `public function free(){}` > 2 driver子类 1 获取数据库的数据表信息 `public function getTables($dbName = ''){}` 2 获取数据表的字段 `public function getFields($tableName){}` ## 4 总结 1 数据库配置 > convention.php databse.php 2 数据库初始化 > Db::connect() 3 数据库接口 > 数据库的初始化与选项设置 > 数据库的数据增删改查 > 数据库的系统信息,操作信息