我用这个命令从mysql获取存储在数组中的数据
if(mysql_num_rows($data) > 1){
while($row = mysql_fetch_assoc($data)){
$ndata[] = $row;
}
} else {
$ndata = mysql_fetch_assoc($data);
}
现在,当我使用count on
$ndata
时,它会重新运行1;尽管它是空的。当我对返回的数据运行mysql-num-rows时,它将重新显示0行。但是当我将数据转换为$ndata,然后运行count时,它返回1。我要它返回行数。
谢谢
有人能解释一下为什么会有问题以及如何解决吗?
最佳答案
你的逻辑是错误的:你不测试mysql_num_rows($data) == 0
的情况。如果是这种情况,则代码执行的路径与行数为1时相同($ndata = mysql_fetch_assoc($data);
)。但是没有更多的行要返回(根本没有行),所以mysql_fetch_assoc
returns false
。count(false)
返回1
,因为这就是count
的工作原理。
这样做:
$rows = mysql_num_rows($data);
if($rows == 0) {
return null;
}
else if($rows == 1){
$ndata = mysql_fetch_assoc($data);
} else {
while($row = mysql_fetch_assoc($data)){
$ndata[] = $row;
}
}
您可以在第一个
null
分支中返回array()
或if
;这是count
返回0的唯一两个值。