Ejemplo n.º 1
0
 /**
  * 连接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);
     }
 }