2011-10-22 75 views
1

我有3個不同的查詢,一些工作,有些不。PDO與SELECT MySQL的rowCount(),爲什麼一個工作,而不是其他?

我知道pdo select不適用於mysql,那麼爲什麼這些工作?

$q = $dbc -> prepare("SELECT * FROM accounts WHERE id = ?"); 
$q -> execute(array($user['id'])); 
echo $q -> rowCount(); 

返回正確的數據,如果我再添PARAM沒有,

$q = $dbc -> prepare("SELECT * FROM accounts WHERE id = ? && age = 12"); 
$q -> execute(array($user['id'])); 
echo $q -> rowCount(); 

失敗返回零,再此查詢的工作和正確顯示行匹配;

$q = $dbc -> prepare("SELECT * FROM accounts WHERE id = ? && username = ? && logCount = -1"); 
$q -> execute(array($user['id'], $user['username'])); 

爲什麼一些工作和其他人不?

echo $q -> rowCount(); 
+0

也許是因爲第二個查詢*確實*沒有返回任何有效的行?您是否嘗試過在MySQL客戶端(如MySQL查詢瀏覽器)或命令行中執行查詢,並聲稱查詢應該*確實*返回ID **和**年齡都匹配的賬戶? –

+0

不,它定義返回100%; – PHP

回答

-2

第二個查詢要麼失敗,要麼發生錯誤,要麼只是找不到符合WHERE條件的行。 要顯示第一個原因,請將此行添加到連接代碼。

$dbc->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
1

作爲每細手冊,rowCount()僅被定義爲DML查詢:INSERTUPDATE,或DELETE。該手冊指出SELECT查詢「不能保證所有數據庫」,事實上MySQL的支持並不可靠。

+0

什麼是downvotes?這可能不是OP想要聽到的答案,但這是問題的正確答案。他誤解了rowCount()函數的作用。 – dotancohen

相關問題