用户名和密码是正确的但我仍然收到错误:SQLSTATE [28000] [1045]

时间:2012-12-11 07:07:49

标签: pdo database-connection

我正在从mySql切换到PDO,但是我在创建与数据库的正确连接时遇到了问题。用户名和密码在mySql中工作,但是当我尝试使用下面显示的代码进行连接时收到此错误消息:

ERROR: SQLSTATE[28000] [1045] Access denied for user 'sean'@'localhost' (using password: NO)

我不确定为什么它说密码'不'因为我肯定使用了正确的密码,并且没有任何用户名为Sean。我用于用户名或密码的语法有问题吗?

这是我正在使用的代码(我正在为实际密码换取'MyPassword')

<?php
session_start(); 
try {
$conn = new PDO('mysql:host=localhost;dbname=MyDatabase', $clickfi4_root, $MyPassword);
  $stmt = $conn->prepare('SELECT * FROM customer_info WHERE id = :id');
  $stmt->execute(array('id' => $id));
  $result = $stmt->fetchAll();
  if ( count($result) ) {
    foreach($result as $row) {
      print_r($row);
    }
  } else {
    echo "No rows returned.";
  }
} catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
}      
?>

4 个答案:

答案 0 :(得分:1)

错误消息说:

(using password: NO)

这意味着登录尝试时未使用密码。

检查$ MyPassword的值。

另外,请尝试使用root以外的帐户。无论如何,这不是最好的做法。

答案 1 :(得分:0)

有时,username @127.0.0.1会使用username @ localhost。

答案 2 :(得分:0)

事实证明我使用的net tuts tutorial语法略有错误。当我在用户名和密码之前删除'$'时它会起作用: - )

$conn = new PDO('mysql:host=localhost;dbname=MyDatabase', clickfi4_root, MyPassword);

答案 3 :(得分:0)

对于未来的Google员工,我刚才遇到了同样的问题,我非常确定密码是否正确。是的密码确实是正确的,但问题是我如何生成密码以及如何在配置文件中保存密码。

如果您使用像我这样的随机密码生成器,请确保您的密码中没有$美元符号。

如果密码中有$,请确保在配置文件中保留密码

$pass = 'randomchars$morerandom';

但不喜欢这个

$pass = "randomchars$morerandom";