2011-08-16 2 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); 

папки $ ЛОЖЬ и мой errorInfo() возвращает:

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

Что из моего понимания этого означает, что ошибок нет. Я попытался заменить мои: user_id и: да со значениями, и я не получаю ошибок. Результат пуст, но мой вызов fetch по-прежнему возвращает false (который documentation говорит, что он потерпел неудачу), когда я ожидаю пустой массив.

Спасибо за любую помощь :)

ответ

2

выборка вызова, который возвращает ложь не условие ошибки - это просто означает, что нет никаких данных для выборки. например в вашем запросе не было данных. Что возвращает $stmt->rowCount()?

+0

Gosh darnit! Он возвращает 0, что является правильным. Спасибо за помощь, я буду принимать раз 8-минутный знак! Вид неловко ... хе-хе ... – Gazillion

Смежные вопросы