我有这样的查询:
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”。然而,计数永远不会改变。发生了什么事?
答案 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 。