2013-10-01 34 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。

相关问题