PHP的PDO数据库操作类
一个简单的PDO类封装。。仅供学习交流
PdoDb 数据库类
<?php /** * @throws Error * PDO数据库 */ class PdoDb extends DatabaseAbstract { /** * PDO实例 * @var PDO */ protected $DB; /** * PDO准备语句 * @var PDOStatement */ protected $Stmt; /** * 最后的SQL语句 * @var string */ protected $Sql; /** * 配置信息 $config=array('dsn'=>xxx,'name'=>xxx,'password'=>xxx,'option'=>xxx) * @var array */ protected $Config; /** * 构造函数 * @param array $config */ public function __construct($config) { $this->Config = $config; } /** * 连接数据库 * @return void */ public function connect() { $this->DB = new PDO($this->Config['dsn'], $this->Config['name'], $this->Config['password'], $this->Config['option']); //默认把结果序列化成stdClass $this->DB->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ); //自己写代码捕获Exception $this->DB->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT); } /** * 断开连接 * @return void */ public function disConnect() { $this->DB = null; $this->Stmt = null; } /** * 执行sql,返回新加入的id * @param string $statement * @return string */ public function exec($statement) { if ($this->DB->exec($statement)) { $this->Sql = $statement; return $this->lastId(); } $this->errorMessage(); } /** * 查询sql * @param string $statement * @return PdoDb */ public function query($statement) { $res = $this->DB->query($statement); if ($res) { $this->Stmt = $res; $this->Sql = $statement; return $this; } $this->errorMessage(); } /** * 序列化一次数据 * @return mixed */ public function fetchOne() { return $this->Stmt->fetch(); } /** * 序列化所有数据 * @return array */ public function fetchAll() { return $this->Stmt->fetchAll(); } /** * 最后添加的id * @return string */ public function lastId() { return $this->DB->lastInsertId(); } /** * 影响的行数 * @return int */ public function affectRows() { return $this->Stmt->rowCount(); } /** * 预备语句 * @param string $statement * @return PdoDb */ public function prepare($statement) { $res = $this->DB->prepare($statement); if ($res) { $this->Stmt = $res; $this->Sql = $statement; return $this; } $this->errorMessage(); } /** * 绑定数据 * @param array $array * @return PdoDb */ public function bindArray($array) { foreach ($array as $k => $v) { if (is_array($v)) { //array的有效结构 array('value'=>xxx,'type'=>PDO::PARAM_XXX) $this->Stmt->bindValue($k + 1, $v['value'], $v['type']); } else { $this->Stmt->bindValue($k + 1, $v, PDO::PARAM_STR); } } return $this; } /** * 执行预备语句 * @return bool */ public function execute() { if ($this->Stmt->execute()) { return true; } $this->errorMessage(); } /** * 开启事务 * @return bool */ public function beginTransaction() { return $this->DB->beginTransaction(); } /** * 执行事务 * @return bool */ public function commitTransaction() { return $this->DB->commit(); } /** * 回滚事务 * @return bool */ public function rollbackTransaction() { return $this->DB->rollBack(); } /** * 抛出错误 * @throws Error * @return void */ public function errorMessage() { $msg = $this->DB->errorInfo(); throw new Error('数据库错误:' . $msg[2]); } //--------------------- /** * 单例实例 * @var PdoDb */ protected static $_instance; /** * 默认数据库 * @static * @param array $config * @return PdoDb */ public static function instance($config) { if (!self::$_instance instanceof PdoDb) { self::$_instance = new PdoDb($config); self::$_instance->connect(); } return self::$_instance; } //---------------------- /** * 获取PDO支持的数据库 * @static * @return array */ public static function getSupportDriver(){ return PDO::getAvailableDrivers(); } /** * 获取数据库的版本信息 * @return array */ public function getDriverVersion(){ $name = $this->DB->getAttribute(PDO::ATTR_DRIVER_NAME); return array($name=>$this->DB->getAttribute(PDO::ATTR_CLIENT_VERSION)); } }
登录后复制
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章
刺客信条阴影:贝壳谜语解决方案
3 周前
By DDD
Windows 11 KB5054979中的新功能以及如何解决更新问题
2 周前
By DDD
在哪里可以找到原子中的起重机控制钥匙卡
3 周前
By DDD
节省R.E.P.O.解释(并保存文件)
1 个月前
By 尊渡假赌尊渡假赌尊渡假赌
刺客信条阴影 - 如何找到铁匠,解锁武器和装甲定制
4 周前
By DDD

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)
