3

可能重复:
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++;
}
4

4 回答 4

2

去掉|| die (mysql_error())后面的mysql_query()。它被评估为布尔值,这导致了错误。

编辑:

正如 bfavaretto 指出的那样,您可以OR改用。它只是 PHP 的另一个不一致之处。在关于逻辑运算符的 PHP 文档中阅读更多相关信息(查看第一个代码示例的注释)。

于 2012-09-13T20:54:49.987 回答
1

如果有错误,$results 将返回 false。

使用这样的东西来检查你的结果:

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

此外,不推荐使用 mysql_ 函数,并且不推荐使用。请改用 PDO 或 MySQLi。

于 2012-09-13T21:10:43.980 回答
0
if ($results) { while...

确保您确实有结果

于 2012-09-13T20:54:02.240 回答
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";
于 2012-09-13T21:40:02.843 回答