【问题标题】:PDO is unable to fetch database name on SQL queriesPDO 无法在 SQL 查询中获取数据库名称
【发布时间】:2018-08-19 07:48:14
【问题描述】:

我正在尝试通过 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 successful 消息,即使我用随机和不正确的值更改了hostdbname。这怎么可能?当我在数据库用户名和密码上尝试相同的过程时,它会出错。

  2. 如果不将其中的数据库名称声明为 PDO,我将无法运行 SQL 查询 不从db.php 获取数据库名称。例如,这个 SQL 查询 不起作用:

        SELECT * FROM settings WHERE settings_id= :id
    

    但是,这个成功了:

        SELECT * FROM mydb.settings WHERE settings_id= :id
    

我在本地主机上工作。在这个问题之后,我认为它与本地主机有关,我将我的项目移动到虚拟主机。但是,这一步并没有解决问题。

【问题讨论】:

    标签: php mysql pdo


    【解决方案1】:

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

    "mysql:host=$host;dbname=$db"
    

    【讨论】:

    • 我无法相信我必须处理两天的问题的答案是如此简单:) 谢谢! @Guillaume Boudreau
    猜你喜欢
    • 2012-03-08
    • 2023-03-27
    • 1970-01-01
    • 2015-06-12
    • 1970-01-01
    • 2019-04-27
    • 2012-02-17
    • 2016-08-16
    • 1970-01-01
    相关资源
    最近更新 更多