0

Linux サーバーのコマンド ラインで実行すると問題なく動作するクエリがありますが、php から i を実行しようとすると、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;

それは私にこのエラーを与えます:

SQL 構文にエラーがあります。MySQL サーバーのバージョンに対応するマニュアルで、1 行目の 'AND d.keyParam='G002' AND r.EventKey = 'G002' ORDER BY h.timestamp DESC LIMIT 1' 付近で使用する正しい構文を確認してください。

誰が何が悪いのか知っていますか?

4

3 に答える 3

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;
于 2013-10-01T12:05:48.197 に答える
0

以下のようにクエリを更新します。シリアル番号が空でも機能します

$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";
于 2013-10-01T12:14:42.317 に答える
0

変化する

AND h.serialNumber=$serialnumber 

の中へ

AND h.serialNumber='$serialnumber' 

これにより、空の $serialnumber または文字が含まれる $serialnumber がキャッチされます。

于 2013-10-01T12:20:45.060 に答える