/** * 关闭所有数据库实例 */ public static function closeAll() { foreach (self::$instance as $connection) { $connection->closeConnection(); } self::$instance = array(); }
/** * Executes a query */ public static function Query($sql, $params = null) { $retVal = null; try { $comm = self::$_conn->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY)); $comm->execute($params); switch (strtolower(current(explode(' ', $sql)))) { case 'call': case 'select': $retVal = new stdClass(); $retVal->count = $comm->rowCount(); $retVal->comm = $comm; break; case 'insert': $retVal = new stdClass(); $retVal->insertId = self::$_conn->lastInsertId(); $retVal->count = $comm->rowCount(); break; case 'update': case 'delete': $retVal = $comm->rowCount(); break; } self::$lastError = self::$_conn->errorInfo(); } catch (PDOException $e) { self::$lastError = $e; $retVal = false; } return $retVal; }
/** * 取得数据库类实例 * @static * @access public * @param mixed $config 连接配置 * @return Object 返回数据库驱动类 */ public static function getInstance($config = array()) { $md5 = md5(serialize($config)); if (!isset(self::$instance[$md5])) { // 解析连接参数 支持数组和字符串 $options = self::parseConfig($config); // 兼容mysqli if ('mysqli' == $options['type']) { $options['type'] = 'mysql'; } self::$instance[$md5] = new Mysql($options); } self::$_instance = self::$instance[$md5]; return self::$_instance; }