我是新手使用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);
$ folders为FALSE,我的errorInfo()返回:
Array ( [0] => 00000 [1] => [2] => )
根据我的理解,这意味着没有错误。我尝试用值取代my:user_id和:yes,我没有收到错误。结果是空的但我的fetch调用仍然返回false(documentation表示它失败了)当我期待一个空数组时。
感谢您的帮助:)
答案 0 :(得分:2)
返回false的fetch调用不是错误条件 - 它只是意味着没有要获取的数据。例如您的查询未返回任何数据。 $stmt->rowCount()
返回什么?