查询返回额外的空变量

时间:2014-03-23 23:31:31

标签: php mysql sql

在使用SQL调用值时,我遇到了一些奇怪的行为。

$result = mysqli_query($conn,"SELECT DISTINCT value FROM table ORDER BY value ASC");
while($row[] = mysqli_fetch_array($result));
$maxcat = count($row);

我的表中有8个唯一值,但 $ maxcat 返回" 9"。我错过了什么吗?我使用这些信息来填充类别列表。我知道我必须从maxcat中减去一个以允许$ row [0],但我不得不减去两个以弥补这个不会迷路的空值。

for ($i=0; $i<=($maxcat-2); $i++)

干杯!


谢谢@scrowler&amp; @faintsignal!使用mysqli_num_row()而不是count()正是我所需要的。下面的功能代码。

$result = mysqli_query($conn,"SELECT DISTINCT value FROM table ORDER BY value ASC");
$maxcat = mysqli_num_rows($result);
while($row[] = mysqli_fetch_array($result));

1 个答案:

答案 0 :(得分:1)

while条件会针对查询结果中的每一行进行一次评估,再加上一次检测到没有剩余行。因此,如果结果中有8行,则while条件将被评估为8 + 1 = 9 次。因此,您向数组$row添加9个条目,最后一个条目的值为NULL

注意,如果你的while循环有一个正文,那么该正文只会被迭代8次,因为条件将第9次计算为false

正如@scrowler指出的那样,如果你只想计算结果中的行数,你可以简单地使用mysqli_num_rows