mysql_num_rows()期望参数1是资源,php错误

时间:2014-03-06 07:37:47

标签: php

我在访问我的网站时遇到此错误。我已经为三个不同的服务器使用了相同的文件,包括我的本地服务器,它运行正常。有人可以点灯吗?

    $stringIp = $_SERVER['REMOTE_ADDR'];
$intIp = ip2long($stringIp);


$inDB = @mysql_query("SELECT 1 FROM av_whoIsOnline WHERE ip=".$intIp);

if(!mysql_num_rows($inDB)) //CODE IN QUESTION <---------
{


if($_COOKIE['geoData'])
{

list($city,$countryName,$countryAbbrev) =     explode('|',mysql_real_escape_string(strip_tags($_COOKIE['geoData'])));
}
else
{


$xml = file_get_contents('http://api.hostip.info/?ip='.$stringIp);

$city = get_tag('gml:name',$xml);
$city = $city[1];

$countryName = get_tag('countryName',$xml);
$countryName = $countryName[0];

$countryAbbrev = get_tag('countryAbbrev',$xml);
$countryAbbrev = $countryAbbrev[0];


setcookie('geoData',$city.'|'.$countryName.'|'.$countryAbbrev, time()+60*60*24*30,'/');
}

$countryName = str_replace('(Unknown Country?)','UNKNOWN',$countryName);

if (!$countryName)
{
$countryName='UNKNOWN';
$countryAbbrev='XX';
$city='(Unknown City?)';
}

2 个答案:

答案 0 :(得分:0)

@mysql_query之前取出@符号。这显然可以抑制错误。如果您收到错误,$inDB将不是有效资源,因此您将收到错误消息。你的问题很可能就在之前的那一行。

另请注意,mysql库已被弃用,转而使用mysqliPDO。考虑更改代码以使用其中一个较新的库,因为它们更安全

答案 1 :(得分:0)

现在正在运作。谢谢你的回复。

这是我从网上抢过一段时间的在线脚本。我使用相同的脚本更改了主机并得到了此错误。上传数据库后,我删除了'av_whoIsOnline'中的所有条目。然后发生了错误。插入条目并且错误消失了。

我的数据库连接位于另一个文件中。