【问题标题】:While loop doesn't outputs correct result虽然循环不输出正确的结果
【发布时间】:2014-01-31 20:34:55
【问题描述】:

我一直在开发这个应用程序,它有一个名为 funds 的表,这个 funds 表维护用户帐户的资金流入和流出。

这是数据库设计:-

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),但我会得到 $unfunds 的输出 0(默认值)(解锁资金)。

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

谢谢。

【问题讨论】:

  • 您不需要将行值添加到变量中。每个状态只有一行,你可以做一个普通的任务。
  • Array returns 1 less row - PHP 的可能重复项
  • 我建议你看看 Laravel。
  • @MichaelCalkins 我曾经想过转向框架。但我想我需要好好练习 OOP 对吧?
  • @Ankur 如果我要重新开始 PHP,我会从头开始正确的方式。我走上了你现在正在走的路,如果能跳过它就太好了。

标签: php mysql sql


【解决方案1】:

从您的代码中删除这一行,

 $row3=mysql_fetch_array($result3);

【讨论】:

    【解决方案2】:

    你应该使用 mysql_fetch_array()

    或者

    Mysql_fetch_assoc()

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

    【讨论】:

      猜你喜欢
      • 2011-01-19
      • 2023-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-28
      • 1970-01-01
      • 2011-12-03
      • 2023-03-26
      相关资源
      最近更新 更多