コード例 #1
0
ファイル: DBManager.php プロジェクト: shushenghong/asphp
 /**
  * 建立数据库链接
  *
  * @param $config array null代表用app config<br>
  *        array('host' => '127.0.0.1',
  *        'port' => '3306',
  *        'db' => 'test',
  *        'user' => 'root',
  *        'password' => '')
  * @return DataBase 数据库实例
  */
 public static function open($config = NULL)
 {
     $appDbConfig = Application::getInstance()->getConfig('db');
     if (empty($config)) {
         $config = $appDbConfig;
     }
     // 只缓存全体app公用的config
     if ($config == $appDbConfig && isset(DBManager::$_db)) {
         $db = DBManager::$_db;
     } else {
         if (class_exists('PDO')) {
             $link = new \PDO('mysql:host=' . $config['host'] . ';port=' . $config['port'] . ';dbname=' . $config['db'], $config['user'], $config['password']);
             if ($link->errorCode()) {
                 $errorInfo = $link->errorInfo();
                 exit("无法连接数据库:" . $errorInfo[2]);
             }
             DBManager::$_mode = DBManager::MODE_PDO;
             $db = new DataBase($link);
         } else {
             if (class_exists('mysqli')) {
                 $link = new \mysqli($config['host'], $config['user'], $config['password'], $config['db'], $config['port']);
                 if ($link->connect_error) {
                     exit("无法连接数据库:" . $link->connect_error);
                 }
                 DBManager::$_mode = DBManager::MODE_SQLI;
                 $db = new DataBase($link);
             } else {
                 $link = mysql_connect($config['host'] . ':' . $config['port'], $config['user'], $config['password']) or exit("无法连接数据库:" . mysql_error());
                 mysql_select_db(DB_NAME, $link) or exit("不能使用" . DB_NAME . "数据库:" . mysql_error());
                 DBManager::$_mode = DBManager::MODE_SQL;
                 $db = new DataBase($link);
             }
         }
         // utf8改为utf8mb4,以支持一些表情符
         $db->query("set names 'utf8mb4'");
         if ($config == $appDbConfig) {
             DBManager::$_db = $db;
         }
     }
     return $db;
 }