1

我正在从 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

4 回答 4

1

错误信息说:

(using password: NO)

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

检查 $MyPassword 的值。

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

于 2012-12-11T07:14:59.127 回答
0

有时,username@127.0.0.1 可以代替 username@localhost。

于 2012-12-11T07:11:37.177 回答
0

事实证明,我使用的net tuts 教程中的语法略有错误。当我删除用户名和密码之前的“$”时,它可以工作:-)

$conn = new PDO('mysql:host=localhost;dbname=MyDatabase', clickfi4_root, MyPassword);
于 2012-12-11T17:43:54.773 回答
0

对于未来的谷歌人,我刚才也遇到了同样的问题,我很确定密码是正确的。是的,密码确实是正确的,但问题是我如何生成密码以及如何将密码保存在配置文件中。

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

如果您有$密码,请确保将密码保存在配置文件中,如下所示

$pass = 'randomchars$morerandom';

但不是这样

$pass = "randomchars$morerandom";
于 2015-02-01T18:40:20.453 回答