【发布时间】:2010-11-19 09:12:42
【问题描述】:
我的查询在 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 采用者和 mysqli 采用者来运行此查询。我收到了 mysqli 采用者的这个错误。
Mysqli prepare error: Operand should contain 1 column(s)
我搜索了一下,发现它可能是 Zend_Db 中的一个错误,但由于我的 sql 知识有些有限,我不知道我做错了什么还是确实是一个错误。你能帮我解决这个问题吗? 坦克你。
【问题讨论】:
-
您使用的是哪个版本的 Zend?快速搜索显示 1.5 - 1.8 中确实存在一个可能相关的错误 framework.zend.com/issues/browse/ZF-3311
-
我用的是1.9(最新版)
标签: mysql zend-framework pdo zend-db