我试图连接到本地数据库并执行查询:
$dbost="localhost";
$dbuser="root";
$dbpass="";
$dbname="schoolspace_push";
$db = new PDO("mysql:host=$dbost", $dbuser, $dbpass);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "SELECT * FROM tbl_project WHERE project_title=:project_title";
$project_title = 'beaufort';
$stmt = $db->prepare($sql);
$stmt->bindParam("project_title", $project_title);
$stmt->execute();
$project = $stmt->fetchObject();
只是为了得到错误:
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected'
可能导致这种情况的原因是什么?我100%在phpmyadmin中有一个名为“schoolspace_push”的数据库,用户是“root”,没有密码......
答案 0 :(得分:5)
您没有告诉PDO使用哪个数据库。
您可以将dbname=$dbname
添加到您的dsn。
$db = new PDO("mysql:host=$dbost;dbname=$dbname", $dbuser, $dbpass);
或在连接后直接运行
$db->query("use $dbname;");
答案 1 :(得分:2)
$db = new PDO("mysql:host=$dbost;dbname=$dbname", $dbuser, $dbpass);
您没有传入数据库名称。
答案 2 :(得分:1)
castis和Nicholas Young都是正确的。但是,您也可以在查询中指定数据库:
$sql = "SELECT * FROM dbname.tbl_project WHERE project_title=:project_title";
答案 3 :(得分:0)
试试这个
try
{
$pdo = new PDO('mysql:host=localhost;dbname=yourdbname', 'dbuser' , 'password');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXECPTION);
$pdo->exec('SET NAME "utf8"');
}
catch (PDOException $e)
{
$error= 'error text';
include 'errorpage.php';
exit();
}
$success = 'success';
include 'page.php';