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)); } }
Salin selepas log masuk
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas
R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu
By 尊渡假赌尊渡假赌尊渡假赌
Assassin's Creed Shadows: Penyelesaian Riddle Seashell
2 minggu yang lalu
By DDD
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu
By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
3 minggu yang lalu
By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas
Tutorial CakePHP
1376
52

