gpt4 book ai didi

mysql - mySQL View 出现 Zend_Db PDO 异常?

转载 作者:行者123 更新时间:2023-11-29 13:45:05 24 4
gpt4 key购买 nike

Zend 1.12.1 更新到 1.12.3 并打开 x_debug 并将 OLD_PASSWORD 设置为默认

我重新运行了一个曾经无缝运行的程序,现在它出现了致命的 PDOException,详细信息如下:

错误:

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'place_fcb.userid' in 'group statement'

实际的 SQL 查询:

SELECT `C`.* 
FROM (SELECT `place_fcb`.* FROM `place_fcb`)
AS `C`
WHERE (place_type_id != '176')
GROUP BY place_fcb.userid
HAVING (place_fcb.pda >= '2009-12-21')
AND (place_fcb.pda <= '2010-01-20')

Zend_Db_table_Abstract:

 public function getPlacefcb($start_date = '', $end_date = '', $r_id = '')
{
$sub_sql = $this->select()->from('place_fcb');

$select = $this->select()
->setIntegrityCheck(false)
->from(array('C' => new Zend_Db_Expr('('.$sub_sql.')')))
->where("place_type_id != '176'")
->group('place_fcb.userid');

if($start_date != '')
$select->having('`place_fcb`.`pda` >= ?', $start_date);

if($end_date != '')
$select->having('`place_fcb`.`pda` <= ?', $end_date);

if($region_id != '')
$select->having('`place_fcb`.`r_id` = ?', $r_id);

return $rowset = $this->fetchAll($select);
}

place_fcb的MySQL:

place_fcb 是一个 View 而不是一个表。它有以下相关字段

place_id
r_id
place_type_id
pda
userid

我可以通过将 SQl 语句更改为以下内容来删除异常并返回相同的结果:

    SELECT `C`.* 
FROM (SELECT `place_fcb`.* FROM `place_fcb`)
AS `C`
WHERE (place_type_id != '176')
GROUP BY userid
HAVING (pda >= '2009-12-21')
AND (pda <= '2010-01-20')

即。删除所有表后缀...

但是我该如何使用 Zend 修复它呢?为什么突然出错了?

最佳答案

为什么你的查询使用子查询:

->from(array('C' => new Zend_Db_Expr('('.$sub_sql.')')))

而不是简单地:

->from('place_fcb')

对于前者,外部查询中没有 place_fcb 表;因此,如此合格的引用会失败(而且总是会失败,所以我看不出在这次升级之前它是如何为您工作的)。

如果您坚持保留子查询,则可以将子查询的别名从 'C' 重命名为 'place_fcb',尽管这可能会在很长的时间内造成困惑学期;最好将限定引用从 'place_fcb' 重命名为 'C'

关于mysql - mySQL View 出现 Zend_Db PDO 异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17542304/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com