PHP警告:mysql_fetch_array()期望参数1是资源,给定布尔值

时间:2012-09-13 20:52:20

标签: php mysql

  

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

4 个答案:

答案 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";