2014-10-01 74 views
-1

我有这段代码,我不确定它为什么不起作用。显然,这不是赶上任何异常,我试图调试,发现这是在那里我加点突破:将FROM_UNIXTIME添加到WHERE子句时未知的PHP PDO错误

WHERE MONTH(FROM_UNIXTIME(unixtime))=“7”

因为当我删除那一切似乎都很好。

<?php 
try { 
    $dbh = new PDO('mysql:host=localhost;dbname=myDb', 'root', 'password'); 
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

    $stmt = $dbh->prepare('SELECT col1, count(*) as frequency FROM myTable WHERE MONTH(FROM_UNIXTIME(unixtime))='7' GROUP BY col1 ORDER BY frequency DESC'); 
    $stmt->execute(); 

    // populate results 
    $results = array(); 
    foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $row) { 
    $row_array['col1'] = $row['col1']; 
    $row_array['frequency'] = $row['frequency']; 

    array_push($results,$row_array);  
    } 

    // and return to typeahead 
    echo json_encode($results);   


    $dbh = null; 
} catch (PDOException $e) { 
    print "Error!: " . $e->getMessage() . "<br/>"; 
    die();  
} 
?> 

我还希望有关启用错误日志显示出来,如果有的话php.ini文件或其他服务器配置进行编辑或配置请让我知道任何帮助。

谢谢!

+0

当您从命令行运行此查询时会发生什么? – 2014-10-01 13:06:51

+0

当我在myadmin.php上查询时,它工作得很好。我想知道为什么我的qn也被拒绝了,所以下次我可以更好地设置我的问题。 – Gabriel 2014-10-01 13:08:49

回答

1

您的报价有问题。像这样做

$stmt = $dbh->prepare("SELECT col1, count(*) as frequency 
FROM myTable 
    WHERE MONTH(FROM_UNIXTIME(unixtime))='7' GROUP BY col1 ORDER BY frequency DESC"); 
+0

我现在得到这个错误 错误!:SQLSTATE [42S22]:找不到列:1054'where子句'中的未知列'unixtime' – Gabriel 2014-10-01 13:15:22

+0

你在mytable中有'unixtime'列吗? – 2014-10-01 13:16:48

+0

非常感谢。我的错。我忘了编辑它到正确的列名称。 – Gabriel 2014-10-01 13:18:55

0

在双引号中更改SQL语句周围的单引号。围绕7的单引号引起你的问题。单引号内的单引号。