在使用 exec() 通过 PHP PDO 连接到数据库时,我遇到了一个非常令人困惑的问题。
我整理了以下片段来说明我的观点。
$host = "localhost";
$db_name = "some_db";
$user_name = "some_user";
$pass_word = "some_password";
try {
// assign PDO object to db variable
$dbh = new PDO("mysql:host=$host;dbname=$db_name;charset=utf8", $user_name, $pass_word, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"));
$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
echo "yahoo connected";
}
catch (PDOException $e) {
//Output error - would normally log this to error file rather than output to user.
echo "Connection Error: " . $e->getMessage();
}
当我通过浏览器运行此代码时,它连接正常,但是当我在命令行运行它时,它会出现以下错误:
Connection Error: SQLSTATE[28000] [1045] Access denied for user 'some_user'@'localhost' (using password: NO)
毋庸置疑,这令人困惑,因为您可以在上面的代码中看到确实设置了密码,并且连接正常工作并将 yahoo 打印到浏览器的屏幕上。任何想法表示赞赏。