繁体   English   中英

我准备好的 SQL 声明有什么问题?

[英]What's wrong with my prepared SQL statement?

我是使用 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 (文档说它失败了)。

谢谢你的帮助:)

返回 false 的 fetch 调用不是错误条件 - 它只是意味着没有数据要获取。 例如,您的查询没有返回任何数据。 $stmt->rowCount()返回什么?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM