`sys\Pdo` 是使用 `php_pdo` 扩展开发,具有预编译SQL的功能,能很好的防止SQL注入,使用时你不需要做额外的转义操作。
## 配置文件定义
`Pdo` 类的配置文件是独立的,在 `config` 目录的 `pdo.php` 文件里,默认内容如下:
> 你需要在该配置文件内填入你的数据库连接信息
~~~
// pdo 配置文件
return [
// 数据源格式
'dsn_format' => '[type]:host=[hostname];port=[hostport];charset=[charset];dbname=[database]',
// 数据库类型
'type' => 'mysql',
// 服务器地址
'hostname' => '127.0.0.1',
// 数据库连接端口
'hostport' => '3306',
// 数据库用户名
'username' => 'root',
// 数据库密码
'password' => '',
// 数据库名
'database' => '',
// 数据库编码默认采用utf8
'charset' => 'utf8',
// 设置PDO属性: http://php.net/manual/zh/pdo.setattribute.php
'attribute' => [
// 设置默认的提取模式: \PDO::FETCH_OBJ | \PDO::FETCH_ASSOC
\PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_OBJ,
// 转换 NULL 和空字符串(在所有驱动中都可用,不仅限于Oracle)
\PDO::ATTR_ORACLE_NULLS => \PDO::NULL_NATURAL,
// 强制列名为指定的大小写
\PDO::ATTR_CASE => \PDO::CASE_NATURAL,
],
// 强制列名为驼峰
'case_camel' => true,
// 事务
'transaction' => [
// 回滚含有零影响行数的事务
'rollback_zero_affected' => true,
],
];
~~~
## 设置PDO属性
`attribute` 配置项里是一个配置数组,使用的是PDO库官方提供的配置选项,详情请查看:http://php.net/manual/zh/pdo.setattribute.php
## 强制列名为驼峰
`case_camel` 配置为 `true` 时,返回的结果集内的数据,字段名称蛇形命名将强制转换为驼峰命名。
~~~
user_name
~~~
将转换为:
~~~
userName
~~~
## 回滚含有零影响行数的事务
`pdo.transaction.rollback_zero_affected` 配置为 `true` 时,事务内的任意一条 `SQL` 如果返回的影响行数为零,本次事务将回滚。