2016-12-02 170 views
2

我有一个成员的表,其中字段为member_id, referrer_member_id, sales_hold_fund。我想检查一个成员的销售持有基金是否> 100,如果它大于100,我想从销售持有基金中减去100。因此,这应该在一个循环中去,直到销售保持资金大于100虽然循环进入无限循环

例子:

销售保持基金为300,首先它应该检查它是否大于 100如果是的,它会从300减去100,200将是余额金额, 再次检查余额金额是否大于100,如果是 再次从200减去100。现在将检查余额金额 是否大于100而不是不是更大,所以它应该停止循环。

我试图实现这一点,但这是在一个无限循环。

$stmt = $dbConnection->prepare("select Member.sales_hold_fund,Member.referrer_member_id from Member where member_id=?"); 
    $stmt->execute(array($member_id)); 
    $memberC = $stmt->fetch(PDO::FETCH_ASSOC); 

    $fund = $memberC['sales_hold_fund']; 

    while($fund > 100) 
    { 
     $balance_amount = $sales_hold_fund - 100; 
     echo $balance_amount; 
     $this->updateSalesHoldFund($member_id,$balance_amount); 

     $profit_sharing = 0.20 * $amount; 

     $referrer_fees = 0.10 * $amount; 

     if(!empty($referrer_member_id)) 
     { 
      // $this->createHundredId($date_of_purchase,$referrer_member_id,$profit_sharing,$referrer_fees,$member_id,$referrer_member_id1); 

     } 
     else if (!empty($referrer_member_id1)) 
     { 
     // $this->createHundredId($date_of_purchase,$referrer_member_id,$profit_sharing,$referrer_fees,$member_id,$referrer_member_id1); 
     } 

     else{ 
      // $this->createHundredId($date_of_purchase,$referrer_member_id,$profit_sharing,$referrer_fees,$member_id,$referrer_member_id1); 
     } 

    } 

我想,当它被更新返回余额并检查它是否大于100。现在,它会无限循环,因为我只当这是从来没有得到更新$基金> 100检查。

我该怎么做?请帮助..谢谢..

任何人都可以帮忙吗?谢谢。

+2

你从来不会对循环内的'$ fund'做任何事情,所以它在进入循环之前总是保持任何值。 – Qirel

+0

如何更新基金并再次检查? @Qirel – Sid

+1

您必须在$ fund上执行操作。 –

回答

2

更新回答

您试图更新$sales_hold_fund并按照你的描述你的代码应该如下。将$fund替换为$sales_hold_fund并对其执行操作。它也将取代你的$balance_amount

$stmt = $dbConnection->prepare("select Member.sales_hold_fund,Member.referrer_member_id from Member where member_id=?"); 
$stmt->execute(array($member_id)); 
$memberC = $stmt->fetch(PDO::FETCH_ASSOC); 

$sales_hold_fund = $memberC['sales_hold_fund']; 

while($sales_hold_fund > 100) 
{ 
    $sales_hold_fund = $sales_hold_fund - 100; 
    echo $sales_hold_fund; 
    $this->updateSalesHoldFund($member_id,$sales_hold_fund); 

    $profit_sharing = 0.20 * $amount; 

    $referrer_fees = 0.10 * $amount; 

    if(!empty($referrer_member_id)) 
    { 
     // $this->createHundredId($date_of_purchase,$referrer_member_id,$profit_sharing,$referrer_fees,$member_id,$referrer_member_id1); 

    } 
    else if (!empty($referrer_member_id1)) 
    { 
    // $this->createHundredId($date_of_purchase,$referrer_member_id,$profit_sharing,$referrer_fees,$member_id,$referrer_member_id1); 
    } 

    else{ 
     // $this->createHundredId($date_of_purchase,$referrer_member_id,$profit_sharing,$referrer_fees,$member_id,$referrer_member_id1); 
    } 

} 
+0

@Sid我更新了我的答案。这可能对您有所帮助。 – Tiger

+0

是的,但我需要在另一个变量中保存余额,然后将其添加到基金..这样一边($基金> 100) { $ balance_fund = $基金 - 100; $ fund = $ balance_fund; – Sid

0

你必须在while循环和睡眠连接中使用db函数。

while($fund > 100) 
    { 

$stmt = $dbConnection->prepare("select Member.sales_hold_fund,Member.referrer_member_id from Member where member_id=?"); 
    $stmt->execute(array($member_id)); 
    $memberC = $stmt->fetch(PDO::FETCH_ASSOC); 

    $fund = $memberC['sales_hold_fund']; 

    ob_start(); 
    sleep(1); 
................ 
............ 
}