我正在尝试通过PDO连接到数据库,我的db.php
文件如下:
$host = "localhost";
$db = "mydb";
$user = "user";
$pass = "qRES2fIWK8Gg";
try
{
$db = new PDO("mysql:host = $host; dbname = $db", $user, $pass);
$db -> exec ("SET NAMES utf8"); // charset = utf8 doesn't work.
echo "Database connection is successful. <br>";
}
catch (PDOException $e)
{
echo $e -> getMessage();
}
我有两个问题,我认为它们之间存在联系。
当我检查db.php
时,即使我用随机和错误的值更改了Database connection is successful
和host
,也可以收到dbname
消息。那怎么可能?当我在数据库用户名和密码上尝试相同的过程时,它给出了一个错误。
我无法在未将数据库名称声明为PDO的情况下运行SQL查询
不会从db.php
获取数据库名称。例如,此SQL查询
不起作用:
SELECT * FROM settings WHERE settings_id= :id
但是,这一项成功完成了:
SELECT * FROM mydb.settings WHERE settings_id= :id
我正在本地主机上工作。解决此问题后,我认为它与本地主机有关,并将项目移至虚拟主机。但是,此步骤尚未解决问题。
答案 0 :(得分:1)
删除DSN字符串中的空格应该可以解决您的问题:
"mysql:host=$host;dbname=$db"