您好,欢迎访问一九零五行业门户网

php pdo封装类代码(支持事务)

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);$this->_db->setattribute(pdo::attr_default_fetch_mode, pdo::fetch_assoc);//自己写代码捕获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 pdo_db*/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 pdo_db*/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 pdo_db*/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(){return;$msg = $this->_db->errorinfo();throw new exception('数据库错误:' . $msg[2]);}//---------------------/*** 单例实例* @var pdo_db*/protected static $_instance;/*** 默认数据库* @static* @param array $config* @return pdo_db*/public static function instance($config){if (!self::$_instance instanceof pdo_db){self::$_instance = new pdo_db($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));}}
复制代码
其它类似信息

推荐信息