2012-09-01 58 views
0

我有下面的SQL代碼:MySQL來PDO錯誤

$statement = "`maildb`"; 

$query = "SELECT COUNT(*) as `num` FROM {$statement}"; 
$row = mysql_fetch_array(mysql_query($query)); 

我想轉換爲PDO ...我已經試過如下:

$statement = "`maildb`"; 

$query = $db->prepare("SELECT COUNT(*) as `num` FROM {$statement}"); 
$query->execute(); 
$row = $query->fetchAll(PDO::FETCH_ASSOC); 

導致:致命錯誤:調用成員函數prepare()在第8行的function.php中的非對象上。

我也試過這個,應該這樣做:

$query = $db->prepare("SELECT * FROM maildb"); 
$query->execute(); 
$row = $query->fetchAll(PDO::FETCH_ASSOC); 

$num = count($row); 

任何幫助?

謝謝!

回答

0

您正在使用未初始化的$ db。請首先做$db = new PDO(<connection details here>)初始化它。有關更多詳細信息,請參閱PDO manual on PHP.net

+0

嘿,謝謝,我做了初始化:$ db = new PDO('mysql:host = localhost; dbname = mailing; charset = UTF-8','root',''); – qalbiol

+1

然後檢查它是否真正被初始化(即通過執行'var_dump($ db);'。如果它不是Object,那麼檢查你是否安裝了用於PDO的mysql驅動程序,如果沒有,安裝並重新啓動你的web服務器 –

+0

傾倒它,並意識到它返回NULL,對代碼進行了一些更改,現在完美的工作!謝謝! – qalbiol

0

您可能沒有實例化$ db。因此,它不是一個對象,因此您不能調用它的一個函數。

+0

嘿嘿,謝謝,我沒有初始化:$ DB =新PDO('MySQL的:主機= localhost; dbname = mailing; charset = UTF-8','root',''); – qalbiol

0

我認爲錯誤在於這一行:

$query = $db->prepare("SELECT COUNT(*) as `num` FROM {$statement}"); 

而是嘗試使用:

$query = $db->prepare("SELECT COUNT(*) as `num` FROM ?"); 
$query->execute($statement);