Php 如果mysql_num_rows等于零,则不工作

Php 如果mysql_num_rows等于零,则不工作,php,mysql,Php,Mysql,我用这段代码计算行数,如果num rows等于零,则尝试执行,如果不更新,则执行INSERT,但它不起作用 当我使用==操作符时,什么都不会发生。如果我使用=操作符脚本插入值,但每次刷新时都运行insert查询,并且值在MySQL表中重复 代码如下: $isexist = mysql_query("select count(*) from wcddl_filehosts where downloadid = '".$download[id]."'"); if (mysql_num_rows($

我用这段代码计算行数,如果num rows等于零,则尝试执行
,如果不更新,则执行INSERT,但它不起作用

当我使用
==
操作符时,什么都不会发生。如果我使用
=
操作符脚本插入值,但每次刷新时都运行insert查询,并且值在MySQL表中重复

代码如下:

$isexist = mysql_query("select count(*) from wcddl_filehosts where downloadid = '".$download[id]."'");

if (mysql_num_rows($isexist) == 0) {
mysql_query("insert into wcddl_filehosts (downloadid, rs) values ('".$download[id]."','$totalRS')");
} else {
mysql_query("update wcddl_filehosts set rs = '$totalRS' where downloadid = '".$download[id]."'");
}

这有什么不对?

Count将返回一个值,您不能先计数,然后调用mysql\u num\u行。它不是一个就是另一个

你可以

$isExist = mysql_query("Select count(id) from ..."); 
$r = mysql_fetch_array($isExist);
if($r['COUNT(id)'] > 0){
//item exists
}else{
//item doesnt exist
}
或者,您可以按以下方式进行查询:

$isexist = mysql_query("select * from wcddl_filehosts where downloadid = '".$download[id]."'");
if(mysql_num_rows($isExists)>0){
//we have items
}else{
//we dont have items
}

非常感谢你的回答。但我想问,哪种方式更快?这是mysql返回计数本身与php执行计数的问题。我认为MySQL比php更擅长计数,但这只是一种预感,不足为奇。:-)虽然如果你说的是数百万条记录,那么MySQL会更快,我几乎是肯定的。使用MySQL进行计数是一个更好的选择,因为MySQL不必在计算总数之前构建并发回整个结果集(在数百万条记录的情况下是大量数据)。当您使用SELECT from MySQL时,一般的经验法则是永远不要返回您不需要的结果,因为这是对I/O资源的浪费。在您的替代解决方案中,变量不相等:$isexist$isExists。但是当你改变它时,它工作得很好。重新标记,因为这与preg_匹配无关。