Php 如果mysql_num_rows等于零,则不工作
我用这段代码计算行数,如果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($
,如果不更新,则执行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_匹配无关。