public function __construct($dbConfig) { if (!class_exists('PDO')) { self::throwException('不支持PDO,需要先开启PDO扩展!'); } //如果参数不是一个数组 if (!is_array($dbConfig)) { $dbConfig = array('hostname' => DB_HOST, 'username' => DB_USER, 'password' => DB_PWD, 'database' => DB_NAME, 'hostport' => DB_PORT, 'dbms' => DB_TYPE, 'dsn' => DB_TYPE . ":host=" . DB_HOST . ";dbname=" . DB_NAME); } if (empty($dbConfig['hostname'])) { self::throwException('没有主机名,请先配置数据库文件'); } self::$config = $dbConfig; if (empty(self::$config['params'])) { self::$config['params'] = array(); } if (!isset(self::$link)) { $configs = self::$config; if (self::$pconnect) { //开启长连接,添加到配置数组中 $configs['params'][constant("PDO::ATRR_PERSISTENT")] = true; } try { self::$link = new PDO($configs['dsn'], $configs['username'], $configs['password'], $configs['params']); } catch (PDOException $e) { self::throwException($e->getMessage()); } if (!self::$link) { self::throwException('PDO连接错误'); return false; } self::$link->exec('SET NAMES ' . DB_CHARSET); //设置字符集 //self::$dbVersion = self::$link->getAttribute(); self::$connected = true; unset($configs); } }
/** * 连接PDO * @param string $dbConfig * @return boolean */ public function __construct($dbConfig = '') { if (!class_exists("PDO")) { self::throw_exception('不支持PDO,请先开启'); } // 如果没有传递参数,使用默认配置连接 if (!is_array($dbConfig)) { $dbConfig = array('hostname' => DB_HOST, 'username' => DB_USER, 'password' => DB_PWD, 'database' => DB_NAME, 'hostport' => DB_PORT, 'dbms' => DB_TYPE, 'dsn' => DB_TYPE . ":host=" . DB_HOST . ";dbname=" . DB_NAME); } if (empty($dbConfig['hostname'])) { self::throw_exception('没有定义数据库配置,请先定义'); } self::$config = $dbConfig; if (empty(self::$config['params'])) { self::$config['params'] = array(); } if (!isset(self::$link)) { $configs = self::$config; if (self::$pconnect) { //开启长连接,添加到配置数组中 $configs['params'][constant("PDO::ATTR_PERSISTENT")] = true; } try { self::$link = new PDO($configs['dsn'], $configs['username'], $configs['password'], $configs['params']); } catch (PDOException $e) { self::throw_exception($e->getMessage()); } if (!self::$link) { self::throw_exception('PDO连接错误'); return false; } self::$link->exec('SET NAMES ' . DB_CHARSET); self::$dbVersion = self::$link->getAttribute(constant("PDO::ATTR_SERVER_VERSION")); self::$connected = true; unset($configs); } }