2012-08-13 60 views
0

在过去的一个小时里,我一直在扯掉我的头发,试图找出为什么某些函数总是返回假布尔值,当我确定这些行列式是正确的。突然无法从数据库中读取?

因此,作为调试器,我抽象进一步进一步测试所有变量,直到我达到了实际测试血腥数据库连接的程度。

我可以连接到我的数据库,但发送给它的每个查询总是返回false。我很困惑。这怎么可能是错的?

$db = new PDO('mysql:db=privatechat;host=127.0.0.1', 'root', ''); 
var_dump($db); 
$stmt = $db->prepare("SELECT * FROM `accounts`"); 
var_dump($stmt); 
$stmt->execute(); 
$row = $stmt->fetch(); 
var_dump($row); 

结果:

object(PDO)#1 (0) { } object(PDOStatement)#2 (1) { ["queryString"]=> string(24) "SELECT * FROM `accounts`" } bool(false) 

这是疯狂的一部分......当我连接到另一个地方项目还行吧!?

这里是我的数据库和表格的截图:

Database and table

我提交这个疑问, “DB =” 应为 “DBNAME =”

天哪我才意识到! :)

+0

你得到的实际MySQL错误是什么? – 2012-08-13 15:38:53

+0

'选择1从双'? – Sebas 2012-08-13 15:39:14

+1

没关系,我只是意识到PDO字符串是错误的。我把“db =”,而不是“dbname =” – Lee 2012-08-13 15:39:17

回答

1

你想在你的DSN dbname=privatechat

+0

没关系,你知道了 – Martin 2012-08-13 15:40:20

+0

谢谢。我永远为这些微小的细节而堕落! – Lee 2012-08-13 15:40:51

1

PDO连接字符串应该是“mysql:dbname = privatechat”我错过了'name'部分! Woops!

+0

嗯,我放了一个尝试在另一个文档中捕捉它,并没有抛出异常。这就是为什么我认为DSN没问题。这可能是一个错误? – Lee 2012-08-13 15:42:09