2009-06-05 6 views
0

Mon instruction sql ne fonctionne pas avec Zend, elle se plaint du champ Count (*) ... que fais-je de mal?Zend DB - Count (*) ne fonctionne pas

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

et les erreurs ...

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

« son plaindre » - Vous avez des détails sur l'erreur? Obtenez-vous une Zend_Db_Exception ou quoi? –

+0

Désolé à ce sujet, je l'ai mis à jour, mon mauvais. – MichaelICE

+0

Qu'y a-t-il en $ aujourd'hui? Est-ce que cela devrait être cité? –

Répondre

3

La plainte est en fait de la WHERE - ressemble à votre variable $today ne contient pas ce que vous pensez qu'il devrait. En effet, comme il est dit:

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

il semble que votre variable contient une Y qui ne devrait pas être là. Le count semble ne rien avoir à voir avec le problème.

+0

l'a cloué ... j'ai oublié la DATE ('...') autour de mon masque ... DOH – MichaelICE

3

Je suppose que votre variable $ today est corrompue. Modifiez la première ligne (pour les tests)

de

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

Ensuite, vous pouvez voir le SQL brut, il essaie d'exécuter.

6

En dehors de ce que d'autres ont noté au sujet de la valeur que vous avez aujourd'hui $, vous devriez vraiment utiliser des paramètres liés à vos requêtes

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