这可能是一个非常简单的问题,但我找不到解决方案。 如果我有
$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?我该如何解决? 谢谢!
答案 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那样看待它。