2012-08-13 41 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