我第一次开始在php中使用PDO。
这是我的代码:
$host="localhost";
$dbname="meme";
$user="root";
$pass="dream";
global $dbh;
try
{
//dbh : Database Handle
$dbh= new PDO("mysql:host=$host;dbname=$dbname,$user,$pass");
}
catch(PDOException $e)
{
echo $e->getMessage();
}
我收到了这个错误:
SQLSTATE[28000] [1045] Access denied for user 'www-data'@'localhost'
(using password: NO)
我想这是一个常见的错误,因为我可以在Google和StackOverflow上获得一些相关的帖子,但我无法纠正它,可能是因为我在该领域的知识有限。任何帮助表示赞赏。
答案 0 :(得分:2)
请改用:
$dbh= new PDO("mysql:host=$host;dbname=$dbname",$user,$pass);
您完全引用了DSN,用户名和密码。这样,这3个参数实际上只是一个参数。因此,从PDO'构造函数POV,您没有传递用户名和密码。
答案 1 :(得分:1)
这可能是由于MySQL的许可系统。您应该显式授予@localhost
(使用命名套接字)而不是默认@%
(使用网络套接字)的权限:
GRANT ALL ON database_name.* TO `www-data`@localhost IDENTIFIED BY 'password';
是的,我以为你在自己的馅饼里打错了。报价应该在,$user,$pass);
之前