2016-12-02 168 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); 
................ 
............ 
}