[英]SQL query returns empty result in PHP - same query returns result in PHPMyAdmin
[英]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.