2014-10-01 73 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的單引號引起你的問題。單引號內的單引號。