为什么这个循环变量不是递增的?


Why won't this loop variable increment?

我正试图编写代码,将计算由sqlite查询返回的用户数量,然后在这些用户之间分割'账单',但由于某种原因,我的计数器不会增加,我得到一个除零错误。我的代码在这里:

<?php
session_start();
require 'database.php';
$db = new Database();
$name = $_POST['name'];
$amount = $_POST['amount'];
$due = $_POST['due'];
$gid = $_GET['gid'];
$uid = $_SESSION['id'];
$count = 0;
$users = $db->query("select * from members where(gid='$gid');");
while($data = $users->fetchArray()) {
$count++;
}
$amount = $amount / $count;
while($data = $users->fetchArray()) {
if($data['uid'] == $uid) {
    continue;
} else {
    $temp = $data['uid'];
    $db->exec("insert into bills values(NULL,'$gid','$uid','$temp','$amount','$due','false','$name');");
}
}
header('Location:grouppage.php?gid='.$gid.'');
?>

谁对如何解决这个问题有任何想法?

不管循环似乎不工作,你不可能有两个while(... fetchArray())循环没有重置内部指针。

然而,在这种情况下,您不需要:

$users = $db->query("select * from members where(gid='$gid')");
$count = $users->numRows();
if( $count == 0) die("No users found!");
$amount /= $count;
while($data = $users->fetchArray()) {
    ...
}

当select不返回任何记录时,您不处理case。

看看你的代码:

$users = $db->query("select * from members where(gid='$gid');");
while($data = $users->fetchArray()) {
$count++;
}

没有选择数据——没有while-body执行后,$count不加1且为零,结果导致后面一行出现"divide by 0 "错误。

$amount = $amount / $count;