我正在用PHP PDO编写用户注册函数,并且发现我的查询只有在这样写的情况下才能正常运行:
<?php
$dbHost="localhost";
$dbName="project";
$dbUser="admin";
$dbPassword="abcd";
$dbh=new PDO("mysql:host=$dbHost;dbName=$dbName", $dbUser, $dbPassword);
$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
$query=$dbh->prepare("INSERT INTO project.users (userName, userEmail) VALUES (?,?)");
.....
另一方面,如果我这样写,它将无法运行:
...
$query=$dbh->prepare("INSERT INTO users (userName, userEmail) VALUES (?,?)");
...
在这种情况下,我收到以下错误消息:
为什么我需要精确
project.users
?鉴于数据库名称本身已经在PDO对象中,为什么输入表名称还不够?谢谢!
JDelage
更新请参阅下面的接受的答案。用
dbName=$dbName
替换dbname=$dbName
可解决此问题。 最佳答案
显然,PDO无法将事件数据库设置为“项目”,因此您需要每次都指定它。
尝试将您的行修改为如下所示:
$dbh=new PDO("mysql:host=$dbHost;dbname=$dbName", $dbUser, $dbPassword);
唯一的区别是
dbname
拼写为小写,而不是您的dbName
。或者,在成功建立连接后执行以下SQL命令:
USE project;
,例如$dbh->exec('USE project;');
关于php - 将PHP PDO查询写为 `dbName` .`tableName`而不是 `tableName`-为什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6300446/