Что не так с моим подготовленным оператором SQL? - PullRequest
0 голосов
/ 16 августа 2011

Я новичок в использовании PDO и подготовил заявление, поэтому, если я делаю это явно неправильно, пожалуйста, дайте мне знать:)

У меня есть следующий код:

$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 и: yes на значения, и я не получаю ошибок.Результат пуст, но мой вызов извлечения по-прежнему возвращает false (что в документации 1013 * говорит о сбое), когда я ожидаю пустой массив.

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

1 Ответ

2 голосов
/ 16 августа 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...