Zend Framework 基数违规:1241 操作数应包含 1 列

Posted

技术标签:

【中文标题】Zend Framework 基数违规:1241 操作数应包含 1 列【英文标题】:Zend Framework Cardinality violation: 1241 Operand should contain 1 column(s) 【发布时间】:2010-12-04 23:02:41 【问题描述】:

我有一个 sql 问题,我不知道如何解决它,我尝试了一些方法,但是......你知道的。所以这是我的查询:

    /**
 * Returns a list with all the months for the archive
 *
 * @return array
 */
public function Archive()

 $q = "SELECT DISTINCT MONTH(`data`) AS `month`,YEAR(`data`) AS `year` FROM `posts` ORDER BY `data` DESC";
 $all = $this->fetchAll($q);
 if (count($all) > 0) 
  foreach ($all as $info) 
$months[] = array('month_name'=>$this->months($info['month']),'year'=>$info['year'],'month'=>$info['month']);
  
  return $months;
 else
  return false;
 

我的错误:

致命错误:未捕获的异常“Zend_Db_Statement_Exception”和消息“SQLSTATE[21000]:基数违规:1241 操作数应包含 1 列”

有什么帮助吗?

【问题讨论】:

您是否尝试过直接通过 phpMyAdmin 或 sql 提示符运行查询?那么它肯定会返回您所期望的吗? 与问题无关:您忘记将 $months 初始化为数组 【参考方案1】:

我遇到了同样的问题,最后我发现我为一列发布了错误的值。我正在为一列发送 2 个值。 因此,请检查为您的函数提供的参数的值。

【讨论】:

【参考方案2】:

您是否错过了流程中的某个阶段?查询语句行如下:

    /**
 * Returns a list with all the months for the archive
 *
 * @return array
 */
public function Archive()

 $q = "SELECT DISTINCT MONTH(`data`) AS `month`,YEAR(`data`) AS `year` FROM `posts` ORDER BY `data` DESC";
 $stmt = $db->query($q);
 $all = $stmt->fetchAll(); 
 if (count($all) > 0) 
  foreach ($all as $info) 
$months[] = array('month_name'=>$this->months($info['month']),'year'=>$info['year'],'month'=>$info['month']);
  
  return $months;
 else
  return false;
 

【讨论】:

【参考方案3】:

我和你一样工作,但最后我通过使用 Zend_Db_Select 对象而不是查询字符串来解决它:

$select =  $this->getDbTable()->select(); // $this->select(); // 
$select->from('gallery', '*');
$select->where('id_category = ?', $id_category);
$select->where('active', 1);

$resultSet = $this->getDbTable()->fetchAll($select);

已编辑:为代码标记显示缩进。

【讨论】:

【参考方案4】:

我也有同样的问题。看来这是一个 Zend Bug。

来源: http://framework.zend.com/issues/browse/ZF-3311

【讨论】:

以上是关于Zend Framework 基数违规:1241 操作数应包含 1 列的主要内容,如果未能解决你的问题,请参考以下文章

DBAL 基数违规错误

引起:org.hsqldb.HsqlException:基数违规

PHP Zend Framework:设置Zend Navigation

Zend Framework windows8.1下配置zend framework1.12

PHP Zend Framework:引导Zend_Log(登录firebug)

php zend framework