2012-09-13 120 views
3

可能重複:
mysql_fetch_array() expects parameter 1 to be resource, boolean given in selectPHP的警告:mysql_fetch_array()預計參數1是資源,布爾給

它引用該生產線是其中mysql_fetch_array()函數被調用就行了。查詢通過phpmyadmin運行正常。它也不會引發錯誤。任何幫助,將不勝感激。

$query = "select distinct s.time, s.parameter, s.data, t.units from alertData as s, parameters as t where s.parameter like '%Airtemp_Avg%' and s.staID = 'WS_001_UHC' and s.interval_min = 15 and t.parameter like '%Airtemp_Avg%' and unix_timestamp(s.time) >= (unix_timestamp(now()) - 86400) order by time desc"; 
$results = mysql_query($query) || die(mysql_error()); 
$dataCnt = 0; 
while($info = mysql_fetch_array($results)) { 
    //15 Min data 
    if(($dataCnt == 0) && (getTimestamp($info['time']) >= ($now - 4500))) 
     $data15['temp'] = $info['data']; 
    else 
     $data15['temp'] = '-'; 

    $dataCnt++; 
} 
+0

'的var_dump($結果,mysql_error());' – zerkms

+1

題外話,但很重要:請注意PHP強烈建議不要使用'mysql_xx()'函數。這些功能被認爲是過時的,不再維護。他們建議切換到較新的'mysqli_xx()'函數或PDO庫。 – Spudley

回答

0
if ($results) { while... 

確保你確實有結果

+0

不,它沒有任何意義。沒有答案。 '$ results'是一個資源。資源總是轉換爲'true' – zerkms

+0

mysql_query在出現錯誤時返回false – SparK

2

mysql_query()後刪除|| die (mysql_error())。它被評估爲一個布爾,這是導致錯誤。

編輯:

由於bfavaretto指出,你可以使用OR來代替。它只是PHP的另一個不一致之處。在PHP Documentation about Logical Operators中查看更多關於它的內容(查看第一個代碼示例的註釋)。

+1

更好的是,使用'OR die(mysql_error())'代替。 – bfavaretto

+0

當死亡執行時,你不會看到其餘的代碼,所以...不,這不是它 – SparK

+0

@SparK是啊我現在想到了。我愚蠢。 bfavaretto:同樣的事情。 :P – vanneto

1

如果出現錯誤,$ results將返回false。

使用這樣的檢查結果:

if (false === $result) { 
echo mysql_error(); 
} 

此外,mysql_函數不推薦,並且被棄用。改爲使用PDO或MySQLi。

0

我相信你的SQL查詢有問題,檢查表名和列名是否正確,檢查你是否有連接到數據庫,還有bfavaretto說用or die(mysql_error())代替。

我不是100%肯定,但不應該查詢是:

$query = "select distinct s.time, s.parameter, s.data, t.units as s, parameters as t from alertData where s.parameter like '%Airtemp_Avg%' and s.staID = 'WS_001_UHC' and s.interval_min = 15 and t.parameter like '%Airtemp_Avg%' and unix_timestamp(s.time) >= (unix_timestamp(now()) - 86400) order by time desc"; 

,而不是

$query = "select distinct s.time, s.parameter, s.data, t.units from alertData as s, parameters as t where s.parameter like '%Airtemp_Avg%' and s.staID = 'WS_001_UHC' and s.interval_min = 15 and t.parameter like '%Airtemp_Avg%' and unix_timestamp(s.time) >= (unix_timestamp(now()) - 86400) order by time desc"; 
相關問題