PHP PDO未选择数据库


PHP PDO not selecting database

我正试图用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);

使用双重报价

单引号中不允许包含变量。

例如:

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

或者更好的方法是确保所有内容都正确逃脱:

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

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的默认端口,不需要指定。