我有这个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代码有什么问题?
答案 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