2013-10-01 29 views
0

我的查詢在我的Linux服務器命令行上運行時運行正常,但當我嘗試通過php執行時,它會引發php錯誤。MySQL查詢在命令行中運行良好,但在運行時出現錯誤php

SELECT h.timestamp, d.valueparam, r.label, r.dataUnit 
FROM EventData d, EventHeader h, EventKeyReference r 
WHERE h.id = d.eventHeader_id AND h.serialNumber=$serialnumber 
AND d.keyParam='G002' AND r.EventKey = 'G002' 
ORDER BY h.timestamp DESC LIMIT 1; 

它給我這個錯誤:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND d.keyParam='G002' AND r.EventKey = 'G002' ORDER BY h.timestamp DESC LIMIT 1' at line 1

有誰知道什麼是錯?

+1

在PHP中,將您的查詢回顯至屏幕並查看顯示內容。 – user1032531

回答

4

我的猜測:$serialnumber是空的,你的查詢是:

SELECT h.timestamp, d.valueparam, r.label, r.dataUnit 
FROM EventData d, EventHeader h, EventKeyReference r 
WHERE h.id = d.eventHeader_id AND h.serialNumber= 
               // ^-- error here 
AND d.keyParam='G002' AND r.EventKey = 'G002' 
ORDER BY h.timestamp DESC LIMIT 1; 
+0

謝謝,這樣一個愚蠢的錯誤,這已經給我幾個小時了。我已經寫了$ serialNumber,我使用了運行查詢的函數。謝謝。 –

0

更新查詢如下,它會更加SERIALNUMBER是空

$sql = "SELECT h.timestamp, d.valueparam, r.label, r.dataUnit 
FROM EventData d, EventHeader h, EventKeyReference r 
WHERE h.id = d.eventHeader_id AND h.serialNumber='".$serialnumber."' 
AND d.keyParam='G002' AND r.EventKey = 'G002' 
ORDER BY h.timestamp DESC LIMIT 1"; 
0

變化

AND h.serialNumber=$serialnumber 

分成

AND h.serialNumber='$serialnumber' 

這將捕獲任何空的$ serialnumber或帶有字母的$ serialnumber。

相關問題