`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` 如果返回的影響行數為零,本次事務將回滾。