简单php PDO目录名称无效:1046未选择数据库
这可能是一个非常简单的问题,但我找不到解决办法。 如果我有简单php PDO目录名称无效:1046未选择数据库,php,mysql,pdo,Php,Mysql,Pdo,这可能是一个非常简单的问题,但我找不到解决办法。 如果我有 $query = $conn->query("SELECT * FROM dbName.users"); 一切正常,但如果没有dbName,则会导致错误: SQLSTATE[3D000]:目录名称无效:1046未选择数据库 这是密码 $Host = "localhost"; $Name = "test"; $User = "test"; $Password = ""; try { $conn =
$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();
}
$Host=“localhost”;
$Name=“测试”;
$User=“test”;
$Password=“”;
试一试{
$conn=newpdo(“mysql:host=$host;dbName=$Name”、$User$Password);
$conn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_异常);
$query=$conn->query(“从用户中选择*);
而($r=$query->fetch()){
echo$r['login']。“.$r['pass']。”
”;
}
}捕获(PDO$e){
回显“错误:”..e->getMessage();
}
有人知道为什么它只在表名之前使用dbName吗?我怎样才能修好它?
谢谢 我能重现你的问题
$conn = new PDO("mysql:host=$Host;dbName=$Name", $User, $Password);
// use dbname instead
显然,DSN字符串中的dbName
是区分大小写的。它应该是dbname
。在我改变主意后,它开始工作了
仅供其他人参考,我把它弄乱了一点,看起来DSN中的所有参数名称都是区分大小写的(我在Windows上测试过,有些东西不区分大小写)最好像在中一样进行操作。因此,当您不包含数据库名称时,它会告诉您未选择任何数据库?看起来您已经在连接字符串中指定了一个数据库。这是您正在使用的实际代码吗?是的,当我不包括数据库名称时,它会告诉我没有选择数据库。当我执行“SELECT*FROM$Name.users”时,它是有效的,但是有没有办法避免反复写入db名称?它只能用表名吗?如果答案解决了你的问题,请考虑接受答案。下面是如何返回此处并对勾号/复选标记执行相同操作,直到其变为绿色。这将通知社区,找到了解决方案。否则,其他人可能会认为问题仍然悬而未决,并可能希望发布(更多)答案。您将获得积分,并鼓励其他人帮助您。欢迎来到Stack!