没有数据库名称的Pdo连接?

时间:2012-07-11 12:01:43

标签: php mysql pdo

我正在尝试创建一个CMS,我想让我的客户生活更轻松,所以我自己创建数据库。 我在尝试这样做时遇到了问题。未创建数据库,因此无法连接PDO连接,并且不推荐使用mysql,因此无法使用它。在创建数据库之前,您对如何创建PDO连接有什么建议吗?像一个mysql_select_db()替代品?

3 个答案:

答案 0 :(得分:29)

您可以通过此方式启动PDO连接,如果我错了,请纠正我:

$db = new PDO( "mysql:host=localhost", 'user', 'pass' );

与正常连接的区别在于删除的部分dbname=[xx],如您所见。

当您想使用UTF8连接时,这也是一个免费提示:

$db = new PDO( "mysql:host=localhost;charset=UTF-8", 'user', 'pass' );

为了Yehonatan的评论,您可以通过以下方式选择数据库:

$db->exec('USE databaseName');

答案 1 :(得分:1)

只需删除dbname=部分:

try {
    $pdo = new PDO("mysql:host=localhost;", "user", "pass");
    $stmt = $pdo->query("SHOW DATABASES");
    var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
}
catch (PDOException $e) {
    echo $e->getMessage();
}

给我

array(11) {
  [0]=>
  array(1) {
    ["Database"]=>
    string(18) "information_schema"
  }
  [1]=>
  array(1) {
    ["Database"]=>
    string(5) "cdcol"
  }
  [2]=>
  array(1) {
    ["Database"]=>
    string(5) "chica"
  }
  [3]=>
  array(1) {
    ["Database"]=>
    string(9) "downloads"
  }
  [4]=>
  array(1) {
    ["Database"]=>
    string(5) "mysql"
  }
  [5]=>
  array(1) {
    ["Database"]=>
    string(18) "performance_schema"
  }
  [6]=>
  array(1) {
    ["Database"]=>
    string(10) "phpmyadmin"
  }
  [7]=>
  array(1) {
    ["Database"]=>
    string(8) "rishumon"
  }
  [8]=>
  array(1) {
    ["Database"]=>
    string(4) "test"
  }
  [9]=>
  array(1) {
    ["Database"]=>
    string(5) "users"
  }
  [10]=>
  array(1) {
    ["Database"]=>
    string(7) "webauth"
  }
}

正如所料。

答案 2 :(得分:1)

我发现唯一的想法是在运行任何查询之前使用$pdo->query('USE databasename')设置默认数据库。