PHP PDO没有选择数据库

时间:2012-08-01 20:51:16

标签: php pdo connection-string

我正在尝试使用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);

2 个答案:

答案 0 :(得分:5)

使用 DOUBLE QUOTES

单引号不允许包含变量。

例如:

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

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

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

答案 1 :(得分:2)

使用sprintf替换Neal的答案,让你的变量脱离字符串:

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

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

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

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