/** * 构造函数 * * @see QP_Db_Abstract::__construct() */ public function __construct($config = array(), $isDebug = false, $showError = false) { parent::__construct($config, $isDebug, $showError); // 检测是否安装了 MYSQLI 扩展 if (!function_exists('mysqli_connect')) { throw new QP_Exception('系统错误:没有安装 MYSQLI 扩展.'); } // MYSQLI 没有常连接的概念 // 连接DB if ($this->_debug) { $beginTime = microtime(true); $this->_link = @mysqli_connect($this->_config['host'], $this->_config['username'], $this->_config['password'], null, $this->_config['port']); $endTime = microtime(true); // 记录调试信息 $this->_setDebugInfo('Connect DB Server.', $endTime - $beginTime); } else { $this->_link = @mysqli_connect($this->_config['host'], $this->_config['username'], $this->_config['password'], null, $this->_config['port']); } // 是否连接成功 if (!$this->_link) { $this->_DBError('数据库连接失败,请检查你的数据库配置是否正确:' . @mysqli_error()); } // 打开数据库 if (!@mysqli_select_db($this->_link, $this->_config['dbname'])) { $this->_DBError('打开数据库失败:' . $this->errorMsg()); } // 设置字符集 $this->_setCharset(); }
/** * 构造函数 * * @see QP_Db_Abstract::__construct() */ public function __construct($config = array(), $isDebug = false, $showError = false) { parent::__construct($config, $isDebug, $showError); // 连接数据库,根据连接选项使用不同的连接方式 $connectFun = 'mysql_connect'; if ($this->_config['pconnect']) { $connectFun = 'mysql_pconnect'; } $host = $this->_config['host'] . ':' . $this->_config['port']; // 连接DB if ($this->_debug) { $beginTime = microtime(true); $this->_link = @$connectFun($host, $this->_config['username'], $this->_config['password']); $endTime = microtime(true); // 记录调试信息 $this->_setDebugInfo('Connect DB Server.', $endTime - $beginTime); } else { $this->_link = @$connectFun($host, $this->_config['username'], $this->_config['password']); } // 是否连接成功 if (!$this->_link) { $this->_DBError('数据库连接失败,请检查你的数据库配置是否正确:' . @mysql_error()); } // 打开数据库 if (!@mysql_select_db($this->_config['dbname'], $this->_link)) { $this->_DBError('打开数据库失败:' . @mysql_error()); } // 设置字符集 $this->_setCharset(); }
/** * 构造函数 * * @see QP_Db_Abstract::__construct() */ public function __construct($config = array(), $isDebug = false) { parent::__construct($config, $isDebug); // 检测有没有安装 PDO_MYSQl 支持 if (!in_array('mysql', PDO::getAvailableDrivers())) { throw new QP_Exception('系统错误:没有安装 PDO MYSQL 支持.'); } // 是否打开常连接 $dns = 'mysql:host=' . $this->_config['host'] . ';port=' . $this->_config['port']; $dns .= ';dbname=' . $this->_config['dbname'] . ';charset=' . $this->_config['charset']; $driverOptions = array(); if ($this->_config['pconnect']) { $driverOptions = array(PDO::ATTR_PERSISTENT => true); } // 连接DB if ($this->_debug) { $beginTime = microtime(true); $this->_link = new PDO($dns, $this->_config['username'], $this->_config['password'], $driverOptions); $endTime = microtime(true); // 记录调试信息 $this->_setDebugInfo('Connect DB Server.', $endTime - $beginTime); } else { $this->_link = new PDO($dns, $this->_config['username'], $this->_config['password'], $driverOptions); } // 是否连接成功 if (!$this->_link) { $this->_DBError('数据库连接失败,请检查你的数据库配置是否正确:' . $this->errorMsg()); } // 设置字符集 注意:不知为什么 DNS 中的 charset 属性对MYSQL没有作用. $this->_setCharset(); // 强制列名是小写 $this->_link->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER); // 错误级别 PDO::ERRMODE_EXCEPTION 抛出异常 // PDO::ERRMODE_WARNING 显示警告错误. // PDO::ERRMODE_SILENT 不显示错误信息,只显示错误码.(只有这个错处框架才好自行处理) $this->_link->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT); }