0

我正在尝试使用 PHP PDO 连接到数据库,但我不断收到此消息:“错误:未选择数据库”。我在 PDO 之前的代码工作得很好。谁能看到我做错了什么?我是 PDO 的新手。

旧代码:

$dbHost = 'localhost:3306';
$dbUser = 'username';
$dbPass = 'password';
$dbName = 'database_name';
$dbconn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to the database!');
mysql_select_db($dbname);

PDO 代码:

$dbHost = 'localhost';
$dbUser = 'username';
$dbPass = 'password';
$dbName = 'database_name';
$dbconn = new PDO('mysql:host=$dbHost;port=3306;dbname=$dbName', $dbUser, $dbPass);
4

2 回答 2

5

使用双引号

单引号中不允许有变量。

例如:

$dbconn = new PDO("mysql:host=$dbHost;port=3306;dbname=$dbName", $dbUser, $dbPass);

或者更好地确保所有内容都正确转义:

$dbconn = new PDO("mysql:host={$dbHost};port=3306;dbname={$dbName}", $dbUser, $dbPass);
于 2012-08-01T20:53:17.507 回答
2

替代 Neal 的答案,sprintf用于将变量从字符串中取出:

$dbconn = new PDO(
    sprintf('mysql:host=%s;dbname=%s', $dbHost, $dbName),
    $dbUser,
    $dbPass
)

此外,为了确保生成的字符串是正确的,您应该打印它:

print sprintf('mysql:host=%s;dbname=%s', $dbHost, $dbName);

端口3306是 MySQL 的默认端口,不需要指定。

于 2012-08-01T20:56:54.040 回答