计数num_rows问题

时间:2011-03-31 22:35:12

标签: php codeigniter

我有这样的查询:

SELECT * FROM configurations WHERE ID = userID

然后我有这样的逻辑:

if ($query->num_rows() > 0) {

foreach($query->result() as $row) { 
// display data
}

else {

// display no data found message

}

但是当我尝试这样做时:

count($query->num_rows())

总是1,无论返回多少结果。如果返回1或更多,则执行“if”。如果没有返回结果,则执行“else”。然而,计数永远不会改变。发生了什么事?

3 个答案:

答案 0 :(得分:1)

首先else {应为} else { - 你错过了大括号

其次,count()用于计算数组中元素的数量。由于$query->num_rows()返回的是数字而不是数组,因此您无需使用count()。在你的情况下,count()告诉你有一个数字,而不是实际的数字!

尝试:

$count = $query->num_rows();
echo $count;

答案 1 :(得分:1)

您正在使用 $ query-> num_rows()获取整数,因此当您通过 count()函数运行该整数时,它将被设计为返回1。

http://us2.php.net/manual/en/function.count.php

  

如果var不是数组或对象   使用实现的Countable接口,   1将被退回。有一个   异常,如果var为NULL,则为0   返回。

答案 2 :(得分:1)

你不能count()一个数字,它可以正常工作。如果您只希望表中的记录数使用SQL中的COUNT() ...

$sql = mysql_query("SELECT COUNT(0) AS count FROM configurations WHERE ID = userID");
$sql = mysql_fetch_assoc($sql);
$count = $sql["count"];

否则,只需将$count = $query->num_rows();指定为 @chriso