while循环不输出正确的结果

时间:2014-01-31 20:34:56

标签: php mysql sql

我一直致力于这个有一个名为资金的表格的应用程序,这个资金表维护用户帐户的资金传入和传出。

这是数据库设计: -

NAME          TYPE                       DEFAULT     NULL
recordid      int auto_increment                     NO
parentemail   varchar(255)                           NO
funds         int                                    NO
is_locked     varchar                    YES         NO 

好的,假设此表中有4个条目,其中两个状态为 YES ,其中两个状态为 NO ,我正在使用此查询从此表中获取总和和锁定状态。

SELECT sum(funds) AS funds,is_locked AS status FROM funds where parentemail = '" . $email . "' GROUP BY is_locked

然后我使用此代码将锁定资金的值(状态为(is_locked)的资金为YES)和未锁定资金(状态为(is_locked)的资金设置为NO)给不同的变量;

$query3="SELECT sum(funds) AS funds,is_locked AS status FROM funds where parentemail = '" . $email . "' GROUP BY is_locked";
$result3=mysql_query($query3,$db) or die (mysql_error($db));
$row3=mysql_fetch_array($result3);
$ulfunds=0;
$lfunds=0;
while($row3=mysql_fetch_assoc($result3))
{
    if($row3['status'] == "NO") //if is_locked == NO, then funds are not locked and it would be stored in $ulfunds
    {
        $ulfunds=$ulfunds + $row3['funds'];
    }
    if($row3['status'] == "YES")//if is_locked == YES, then funds are are locked and would be stored in $lfunds
    {
        $lfunds=$lfunds + $row3['funds'];
    }
}

问题

现在,如果我回显$lfunds(locked funds)$ulfunds(unlocked funds),我得到$ lfunds的正确值(锁定资金,is_locked == YES),但我得到输出0(默认值) $unfunds(未锁定的资金)。

如何解决这个问题,以便在两个变量中得到正确的值?

感谢。

2 个答案:

答案 0 :(得分:2)

从代码中删除此行

 $row3=mysql_fetch_array($result3);

答案 1 :(得分:0)

你应该使用其中之一 Mysql_fetch_array()

Mysql_fetch_assoc()

但不是两者兼而有之。尝试将循环放在mysql_fetch_array()它应该工作