简单的php PDO无效的目录名称:1046未选择数据库

时间:2017-07-13 17:51:53

标签: php mysql pdo

这可能是一个非常简单的问题,但我找不到解决方案。 如果我有

$query = $conn->query("SELECT * FROM dbName.users");

一切正常,但没有dbName会导致错误:

  

SQLSTATE [3D000]:无效的目录名称:1046未选择任何数据库。

这是代码

$Host     = "localhost";
$Name     = "test";
$User     = "test";
$Password = "";

try {
    $conn = new PDO("mysql:host=$Host;dbName=$Name", $User, $Password);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $query = $conn->query("SELECT * FROM users");
    while($r = $query->fetch()){
        echo $r['login']." ".$r['pass']."<br>";
    }
} catch (PDOException $e) {
    echo "Error: " . $e->getMessage();
}

有谁知道,为什么它只能在表名之前使用dbName?我该如何解决? 谢谢!

1 个答案:

答案 0 :(得分:2)

我能够重现你的问题。

String result = future.get(60, TimeUnit.SECONDS);

显然,DSN字符串中的$conn = new PDO("mysql:host=$Host;dbName=$Name", $User, $Password); // use dbname instead 区分大小写。它应该是dbName。在我改变之后它起作用了。

对于其他任何发生这种情况的人来说,我只是误解了它,看起来DSN中的所有参数名称似乎都是区分大小写的(我在Windows上测试了这个,其中一些事情不是。)最好只是像the documentation那样看待它。