使用PDO时没有数据库选择错误

时间:2014-04-01 07:16:45

标签: php mysql pdo

我有这个mysql_connect代码完全正常 -

$link = mysql_connect('localhost', 'root'  );
if (!$link) {
    die('Could not connect: ' . mysql_error());
    }

但是使用相同的详细信息,PDO会给出未选择数据库

的错误
<?php

$dbHost = 'mysql:host=localhost; dbname=db; charset=utf8';

$dbUser = "root";

    try {
    $conn = new PDO($dbHost, $dbUser);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
    echo 'ERROR: ' . $e->getMessage();
}

?>

PDO代码有什么问题?

2 个答案:

答案 0 :(得分:0)

DSN语法与PHP语法不同。您无法在DSN中使用PHP语法注意事项 所以,只要按照你已经看过的例子,不要试图装饰它们。

$dbHost = 'mysql:host=localhost;dbname=db;charset=utf8';

如果您希望更明显地看到主机和数据库 - 将它们放在变量中

另外,你不应该赶上这里。所以,代码应该是这样的

$dbHost = "localhost";
$dbBase = "db";
$dbChar = "utf8";
$dbUser = "root";
$dbPass = "";

$conn = new PDO("mysql:host=$dbHost;dbname=$dbBase;charset=$dbChar", $dbUser, $dbPass);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

答案 1 :(得分:-1)

@Newbie - 问题是您在连接脚本中使用$conn,在查询中使用$dbh->prepare。它应该是$conn->prepare