簡體   English   中英

SQL查詢返回空結果

[英]SQL query returns empty result

我有這個SQL查詢:

SET @date_shift = DATE_SUB(NOW(), Interval 60 MINUTE);
SELECT hinfo.idx,
   hinfo.host_idx,
   hinfo.processor_load,
   hinfo.memory_total,
   hinfo.memory_free,
   hnames.idx,
   hnames.name,
   disks.hostinfo_idx,
   disks.id,
   disks.name,
   disks.size,
   disks.freespace,
   hinfo.probetime
FROM   systeminfo.hostinfo AS hinfo
   INNER JOIN systeminfo.hosts AS hnames
           ON hnames.idx = hinfo.host_idx
   INNER JOIN systeminfo.disksinfo AS disks
           ON disks.hostinfo_idx = hinfo.idx
WHERE   hinfo.probetime > @date_shift AND
      hinfo.probetime = (SELECT MAX(probetime) FROM systeminfo.hostinfo AS hi
                                    WHERE hi.probetime > @date_shift AND hi.host_idx = hinfo.host_idx)
GROUP  BY disks.id,
      hnames.name
ORDER  BY hnames.name,
      disks.id;

我試圖在PHP代碼中執行它。 我嘗試了mysql,mysqli和pdo。 馬最后的代碼如下:

$db = new PDO("mysql:host=".$this->ip.";dbname=".$this->dbname.";charset=utf8", $this->username, $this->password);
$result = $db->query($query);
$fetch_data = $result->fetchAll(PDO::FETCH_ASSOC);

要么

mysql_connect($this->ip, $this->username, $this->password);
mysql_query('SET NAMES utf8;');
mysql_select_db($this->dbname);
$result = mysql_query($query);

PHP正確地連接到數據庫。 簡單的查詢,例如從表名中選擇*即可。 但是此查詢不返回任何數據,但有錯誤:

1064:您的SQL語法錯誤; 在第2行的“ SELECT hinfo.idx,hinfo.host_idx,hinfo.processor_load,hinfo.memory_total,”附近檢查與您的MySQL服務器版本相對應的手冊以使用正確的語法

在數據庫客戶端中執行的同一查詢可以完美地工作(這不是慢查詢,執行此查詢所需的時間少於10毫秒)。 而且,當我嘗試直接從網頁上的此功能打印查詢並將其粘貼到mysql客戶端中時-它也​​很好地工作! 我在嘗試強制utf編碼的十六進制查看器中找不到任何特殊字符,什么也沒有。

有任何想法嗎? 測試我可以執行? 提前致謝!

嘗試將其作為兩個單獨的語句執行。 從GUI工具或命令行工具運行查詢與將查詢嵌入代碼不同。 因此,它可以在數據庫工具中工作,但不能在php代碼中工作。

用於PHP的mysql適配器一次只能處理一個查詢。 您確實應該將查詢彼此分開運行。

假設您與mysql的連接在兩個查詢之間沒有被破壞,則第二個查詢中將使用“ @date_shift”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM