如何查看PDO中是否存在数据库

时间:2015-05-06 02:05:10

标签: php mysql pdo

所以我最近决定切换到PDO,因为mysqli准备了语句的复杂性和不规则性。这是我测试数据库的mysqli函数:

public static function is_database($database) {
    self::connect();
    if( mysqli_select_db(self::$conn,$database) ) {
        self::$dbname = $database;
        return true;
    } else {
        return false;
    }
    self::disconnect();
}

到目前为止,关于PDO和任何数据库的唯一内容是:

$pdo->exec("use database");

这不是我想要的,除非使用try catch会有效。这种东西

public static function is_database($database){
   self::connect();
   try {
      self::$conn->exec('use '.$database);
      return true;
   } catch(PDOException $e){
     print($e->getMessage();
     return false;
     die();
   }
}

需要为1小时新PDO用户提供一些帮助。谢谢你的任何建议。

1 个答案:

答案 0 :(得分:2)

根据How to check if mysql database exists

上的查询
$stmt = $pdo->query("SELECT COUNT(*) FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'DBName'");
return (bool) $stmt->fetchColumn();

我们检查将返回1或0的计数,并将其转换为布尔值(true / false)。

当然,这需要通过PDO建立现有连接。这对于您在第一次连接之前检查数据库是行不通的。

对于初始连接,您可以使用try,catch块,假设PDO的错误模式设置为异常。

try { 
   $pdo = new PDO(...);
}
catch (PDOException $e) {
   die('Error: '.$e->getMessage().' Code: '.$e->getCode());
}

您必须进一步挖掘特定错误消息或与不存在的数据库重合的代码,因为这可能意味着错误的用户名/密码或不存在的MySQL服务器。