PDO无法通过SQL查询获取数据库名称

时间:2018-08-18 23:40:02

标签: php mysql pdo

我正在尝试通过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();
}

我有两个问题,我认为它们之间存在联系。

  1. 当我检查db.php时,即使我用随机和错误的值更改了Database connection is successfulhost,也可以收到dbname消息。那怎么可能?当我在数据库用户名和密码上尝试相同的过程时,它给出了一个错误。

  2. 我无法在未将数据库名称声明为PDO的情况下运行SQL查询 不会从db.php获取数据库名称。例如,此SQL查询 不起作用:

        SELECT * FROM settings WHERE settings_id= :id
    

    但是,这一项成功完成了:

        SELECT * FROM mydb.settings WHERE settings_id= :id
    

我正在本地主机上工作。解决此问题后,我认为它与本地主机有关,并将项目移至虚拟主机。但是,此步骤尚未解决问题。

1 个答案:

答案 0 :(得分:1)

删除DSN字符串中的空格应该可以解决您的问题:

"mysql:host=$host;dbname=$db"
相关问题