我正在从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();
}
?>
答案 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";