我正在尝试使用count()函数来获取数组中元素的数量,结果让我有点费解,考虑到下面的例子。
假设提供的用户ID是错误的,因此没有匹配项,那么count函数的结果不是0吗?然而它是1。你能给我解释一下为什么吗?
谢谢
$q = mysql_query("select password from users where user_name = '" . $userID . "'");
$check = mysql_fetch_array($q);
$result = count($check);
echo "RESULT:" . $result;发布于 2010-05-27 02:17:13
这是计算结果集中行数的错误方法。首先,从关于mysql_fetch_array()的文档中
返回与所读取的行相对应的字符串数组,如果没有更多的行,则返回FALSE。
因此,如果我们这么做
echo count( false );我们可以看到输出是1。为什么?因为count()文档也告诉我们这一点
如果var不是数组或实现了Countable接口的对象,则返回1。
要进行适当的计数,请使用mysql_num_rows()
$q = mysql_query("select password from users where user_name = '" . $userID . "'");
$result = mysql_num_rows( $q );
if ( 0 == $result )
{
// no rows in result
}发布于 2010-05-27 02:13:36
count()返回1,因为在失败的情况下,$check不是一个数组。
如果var不是数组或实现了Countable接口的对象,则返回1
但无论如何,您都应该直接处理错误情况(如果查询失败,您的代码甚至不应该达到分析其结果的地步)。同样,正如其他人所说的那样,这不是计算查询返回的结果数量的方法,因为这是mysql_num_rows()的作用
发布于 2010-05-27 02:15:25
使用mysql_num_rows而不是count。对于值FALSE,count返回1
https://stackoverflow.com/questions/2915557
复制相似问题