num_rows和count()不匹配 - php

时间:2017-07-20 19:09:57

标签: php mysql

$result = $conn->query($sql);
echo $result->num_rows; //2 is value produced

BUT

$tagResult =  mysqli_fetch_array($result,MYSQLI_NUM);
echo count($tagResult); //1 is the value produced

是否假设产生相同数量的值?

2 个答案:

答案 0 :(得分:0)

mysqli_fetch_array()

  

返回与获取的行对应的字符串数组,如果结果集中没有其他行,则返回NULL。

所以它只取1行。要获得两者/全部,您需要获取循环中的所有行:

GitGrabService

答案 1 :(得分:0)

mysqli_fetch_array将一次获取一行,无论当前结果的指针是什么。第一次获得结果时,指针位于第一行。当你调用mysqli_fetch_array时,它将获取记录1(指针所在的位置),然后将指针递增到下一条记录。当你再次调用它时,它将获取记录2,依此类推。

如果返回了多行,则需要遍历结果,在每一行上调用mysqli_fetch_array。因为当没有更多行时mysqli_fetch_array返回null,所以你可以使用一个简单的while循环:

$result = $conn->query($sql);
echo $result->num_rows; //2 is value produced

$count = 0;
while ($tagResult = mysqli_fetch_array($result,MYSQLI_NUM))
{
    print_r($tagResult); // Output each row
    $count ++;
}
echo $count; //outputs 2