2011-08-16 60 views
0

我是新來使用PDO和準備好的聲明中,所以如果我這樣做是公然錯了,請讓我知道:)我準備好的SQL語句有什麼問題?

我有以下代碼:

$stmt = $this->_dbh->prepare('(SELECT folder_id, "y" AS "has_access", access_type FROM groups_users AS gu LEFT JOIN folders_groups AS fg ON gu.group_id = fg.group_id WHERE user_id = :user_id) 
         UNION 
         (SELECT folder_id, has_access, access_type FROM folders_users WHERE user_id = :user_id AND has_access = :yes)'); 
$stmt->bindValue(':user_id', $this->_user_id, PDO::PARAM_INT); 
$stmt->bindValue(':yes', self::YES, PDO::PARAM_STR); 
$stmt->execute(); 
$folders = $stmt->fetch(PDO::FETCH_ASSOC); 

,如果我做的:

print_r($this->_dbh->errorInfo());         
print_r($folders); 

$文件夾是FALSE和我errorInfo中()返回:

Array ([0] => 00000 [1] => [2] =>) 

從我的理解來看,這意味着沒有錯誤。我嘗試用值替換我的:user_id和:yes,我沒有收到錯誤。結果是空的,但當我期待一個空數組時,我的獲取調用仍然返回false(其中documentation表示失敗)。

感謝所有幫助:)

回答

2

一個獲取調用,它返回假是不是一個錯誤 - 它只是意味着沒有數據來獲取。例如你的查詢沒有返回數據。 $stmt->rowCount()返回什麼?

+0

天哪darnit!它返回0這是正確的。感謝您的幫助,一旦8分鐘馬上結束,我會接受!有點尷尬......呃...... – Gazillion