简体   繁体   English

Zend DB - Count(*) 不工作

[英]Zend DB - Count(*) not working

My sql statement is not working with Zend, its complaining about the Count(*) field... what am I doing wrong?我的 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;
    }
}

and the errors...和错误...

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

Aside from what others have noted about the value you have in $today, you really should be using bound parameters with your queries除了其他人注意到的 $today 中的值之外,您确实应该在查询中使用绑定参数

<?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 )
);

The complaint is actually about the WHERE -- looks like your $today variable does not contain what you think it should.投诉实际上是关于WHERE - 看起来您的$today变量不包含您认为应该的内容。 Specifically, since it says:具体来说,因为它说:

'SQLSTATE[42S22]: Column not found: 1054 Unknown column 'Y' in 'where clause''

it seems your variable contains a Y that shouldn't be there.看来你的变量包含一个不应该存在的Y The count appears to have nothing to do with the issue. count似乎与这个问题无关。

I'm guessing your $today variable is corrupt.我猜你的 $today 变量已损坏。 Change the first line (for testing)更改第一行(用于测试)

from

$stmt = $db->query('SELECT status, count(*) as total FROM reported_issues WHERE date_reported >= '.$today.' AND status IN (0,1) GROUP BY status');

to:到:

$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;
}

Then you can see the raw SQL it's trying to execute.然后你可以看到它试图执行的原始 SQL。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM