可能重复:
mysql_fetch_array() expects parameter 1 to be resource, boolean given in select
它引用的行是调用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 :(得分:2)
删除|| die (mysql_error())
后的mysql_query()
。它被评估为bool并导致错误。
编辑:
正如bfavaretto所说,您可以使用OR
代替。它只是PHP的另一个不一致之处。在PHP Documentation about Logical Operators中阅读更多相关信息(请参阅第一个代码示例的注释)。
答案 1 :(得分:1)
$ results将返回false。
使用类似的内容检查结果:
if (false === $result) {
echo mysql_error();
}
此外,不建议使用mysql_函数,不推荐使用它们。请改用PDO或MySQLi。
答案 2 :(得分:0)
if ($results) { while...
确保您确实有结果
答案 3 :(得分:0)
我相信你的SQL查询有问题,检查表名和列名是否正确,检查你是否有与DB的连接,以及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";