mysql - Zend_Db查询Mysqli准备错误: Operand should contain 1 column(s)

标签 mysql zend-framework pdo zend-db

我的查询有问题,该查询在 phpmyadmin 中有效,但在 Zend_db 中无效。您可以在SQL statement with several joins中阅读有关查询的信息。

我有这些表

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 采用者 Boath 和 mysqli 采用者运行此查询。我在 mysqli 采用者中遇到此错误。

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

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

最佳答案

而不是

parent::fetchAll($query);

使用

$this->getAdapter()->fetchAll($query);

关于mysql - Zend_Db查询Mysqli准备错误: Operand should contain 1 column(s),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1273246/

相关文章:

java - 如何使用hibernate在mysql中将LocalDateTime初始化为TIMESTAMP?

mysql 两次询问密码,即使它已经提供

php - Zend_Db_Table 使用不同的连接适配器进行读写

apache - 一台服务器上有多个Zend框架站点

php - 我的 php 代码中的 if 条件有问题

PHP 和 PDO : Which is faster? 正在获取 COUNT(*) 或 rowCount()?

mysql连接虚表

php - 如果数据库中有数据,如何创建一个自动<table>,php

security - 为什么 Magento 每个 session 使用 2 个 cookie?

PHP:SQL 准备语句事务无法正常工作。它插入 1 个 SQL 语句,而不是两者