在使用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));
答案 0 :(得分:1)
while
条件会针对查询结果中的每一行进行一次评估,再加上一次检测到没有剩余行。因此,如果结果中有8行,则while
条件将被评估为8 + 1 = 9 次。因此,您向数组$row
添加9个条目,最后一个条目的值为NULL
。
注意,如果你的while
循环有一个正文,那么该正文只会被迭代8次,因为条件将第9次计算为false
。
正如@scrowler指出的那样,如果你只想计算结果中的行数,你可以简单地使用mysqli_num_rows
。