-3

我第一次开始在 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 上获得许多相关帖子,但我未能纠正它可能是因为我在该领域的知识有限。任何帮助表示赞赏。

4

2 回答 2

2

改用这个:

$dbh= new PDO("mysql:host=$host;dbname=$dbname",$user,$pass);

您已经完全引用了 DSN、用户名和密码。这样,这 3 个参数实际上只是一个参数。因此,从 PDO 的构造函数 POV 中,您没有传递用户名和密码。

于 2012-06-25T09:47:20.200 回答
1

这可能是由于 MySQL 的权限系统。您应该显式授予权限@localhost(使用命名套接字)而不是默认权限@%(使用网络套接字):

GRANT ALL ON database_name.* TO `www-data`@localhost IDENTIFIED BY 'password';

顺便说一句,我假设你在你的馅饼上打错了。报价应该一直到之前,$user,$pass);

于 2012-06-25T09:47:12.417 回答