我正在尝试使用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);
答案 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的默认端口,并不一定需要指定。