我一直致力于这个有一个名为资金的表格的应用程序,这个资金表维护用户帐户的资金传入和传出。
这是数据库设计: -
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
(未锁定的资金)。
如何解决这个问题,以便在两个变量中得到正确的值?
感谢。
答案 0 :(得分:2)
从代码中删除此行
$row3=mysql_fetch_array($result3);
答案 1 :(得分:0)
你应该使用其中之一 Mysql_fetch_array()
或
Mysql_fetch_assoc()
但不是两者兼而有之。尝试将循环放在mysql_fetch_array()它应该工作