2014-09-26 63 views
0

林没有数据库中选择错误试图连接到本地数据库,并执行一个查询:在MySQL

 $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”,没有密码...

回答

2
$db = new PDO("mysql:host=$dbost;dbname=$dbname", $dbuser, $dbpass); 

你不是在传递一个数据库名称后直接

$db = new PDO("mysql:host=$dbost;dbname=$dbname", $dbuser, $dbpass); 

或者运行。

5

你不告诉PDO要使用哪个数据库。

您可以将dbname=$dbname添加到您的dsn。连接

$db->query("use $dbname;"); 
1

castis和Nicholas Young都是对的。然而,你也可以在查询中指定数据库:

$sql = "SELECT * FROM dbname.tbl_project WHERE project_title=:project_title"; 
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';