虽然循环进入无限循环
问题描述:
我有一个成员的表,其中字段为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检查。
我该怎么做?请帮助..谢谢..
任何人都可以帮忙吗?谢谢。
答
更新回答
您试图更新$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);
}
}
答
你必须在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);
................
............
}
你从来不会对循环内的'$ fund'做任何事情,所以它在进入循环之前总是保持任何值。 – Qirel
如何更新基金并再次检查? @Qirel – Sid
您必须在$ fund上执行操作。 –