我的sql语句不适用于Zend,它抱怨Count(*)字段......我做错了什么?
// get open/closed
$stmt = $db->query('SELECT status, count(*) as total FROM reported_issues WHERE date_reported >= '.$today.' AND status IN (0,1) GROUP BY status');
while ($row = $stmt->fetch())
{
switch ($row['status'])
{
case 0:
$totalIssuesToday = $row['total'];
break;
case 1:
$totalIssuesClosedToday = $row['total'];
break;
}
}
和错误......
Fatal error: Uncaught exception 'Zend_Db_Statement_Exception' with message
'SQLSTATE[42S22]: Column not found: 1054 Unknown column 'Y' in 'where clause''
in C:\xampp\htdocs\dating\trunk\library\Zend\Db\Statement\Pdo.php:238
Stack trace:
#0 C:\xampp\htdocs\dating\trunk\library\Zend\Db\Statement.php(283): Zend_Db_Statement_Pdo->_execute(Array)
#1 C:\xampp\htdocs\dating\trunk\library\Zend\Db\Adapter\Abstract.php(484): Zend_Db_Statement->execute(Array)
#2 C:\xampp\htdocs\dating\trunk\library\Zend\Db\Adapter\Pdo\Abstract.php(235): Zend_Db_Adapter_Abstract->query('SELECT status, ...', Array)
#3 C:\xampp\htdocs\dating\trunk\html\siteadmin.php(59): Zend_Db_Adapter_Pdo_Abstract->query('SELECT status, ...')
#4 {main} thrown in C:\xampp\htdocs\dating\trunk\library\Zend\Db\Statement\Pdo.php on line 238
答案 0 :(得分:6)
除了其他人已经注意到你今天在$中的价值,你真的应该在你的查询中使用绑定参数
<?php
$stmt = $db->query(
"SELECT status, count(*) as total
FROM reported_issues
WHERE date_reported >= ?
AND status IN (0,1)
GROUP BY status"
,array( $today )
);
答案 1 :(得分:3)
投诉实际上与WHERE
有关 - 看起来您的$today
变量不包含您认为应该包含的内容。具体来说,因为它说:
'SQLSTATE[42S22]: Column not found: 1054 Unknown column 'Y' in 'where clause''
您的变量似乎包含Y
,不应该存在。 count
似乎与此问题无关。
答案 2 :(得分:3)
我猜你的$ today变量已损坏。更改第一行(用于测试)
来自
$stmt = $db->query('SELECT status, count(*) as total FROM reported_issues WHERE date_reported >= '.$today.' AND status IN (0,1) GROUP BY status');
为:
$sql='SELECT status, count(*) as total FROM reported_issues WHERE date_reported >= '.$today.' AND status IN (0,1) GROUP BY status';
try{
$stmt = $db->query($sql);
} catch (Exception $e) {
echo $sql."\n";
throw $e;
}
然后你可以看到它试图执行的原始SQL。