2

我对在 phpmyadmin 中有效但在 Zend_db 中无效的查询有疑问。您可以阅读有关带有多个连接的 SQL 语句中的查询

我有这些桌子

Post
    ID
    entry
Category
    ID
    name
CategoryBinding
    ID
    postID
    categoryID

这是我的 php 代码:

    class Blog_Model_DbTable_Posts extends Zend_Db_Table
    {
        protected $_name = 'Posts';
    public function getByCategoryId($id)
    {
            $query = 
    "SELECT * 
FROM `Post` AS `p` 
LEFT JOIN `CategoryBinding` AS `cb` ON p.ID = cb.postID 
LEFT JOIN `Category` AS `c` ON cb.categoryID = c.ID
INNER JOIN `Post` AS `p2` ON p.id = p2.id
WHERE p.id in
(
    SELECT p2.id
        FROM `Post` as `p2`
        LEFT JOIN `CategoryBinding` AS `cb` ON p2.ID = cb.postID 
        LEFT JOIN `Category` AS `c` ON cb.categoryID = c.ID
        WHERE c.id = 1
    )
    "
return parent::fetchAll($query);

我试图用 pdo 采用者和 mysqli 采用者来运行这个查询。我收到了 mysqli 采用者的这个错误。

Mysqli prepare error: Operand should contain 1 column(s)

我搜索了一下,发现它可能是 Zend_Db 中的一个错误,但由于我的 sql 知识有些有限,我不知道我是否做错了什么,或者它是否确实是一个错误。你能帮我解决这个问题吗?保护你。

4

1 回答 1

4

代替

parent::fetchAll($query);

采用

$this->getAdapter()->fetchAll($query);
于 2009-08-13T17:34:15.320 回答