Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 而循环是在一个无限循环中进行的_Php_While Loop - Fatal编程技术网

Php 而循环是在一个无限循环中进行的

Php 而循环是在一个无限循环中进行的,php,while-loop,Php,While Loop,我有一个成员表,其中的字段是成员id、推荐人成员id、销售持有基金。我想检查会员的销售持有基金是否大于100,如果大于100,我想减去销售持有基金中的金额100。所以这应该是一个循环,直到销售持有基金大于100 例如: 销售持有基金为300,首先检查是否大于 100如果是300减去100,余额为200, 再次检查余额金额是否大于100,如果是 同样,它将从200减去100。现在,它将检查是否有余额 大于100而不是大于100,因此应停止循环 我试图实现这一点,但这是一个无限循环 $stmt

我有一个成员表,其中的字段是
成员id、推荐人成员id、销售持有基金
。我想检查会员的销售持有基金是否大于100,如果大于100,我想减去销售持有基金中的金额100。所以这应该是一个循环,直到销售持有基金大于100

例如:

销售持有基金为300,首先检查是否大于 100如果是300减去100,余额为200, 再次检查余额金额是否大于100,如果是 同样,它将从200减去100。现在,它将检查是否有余额 大于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。现在它是无限循环,因为我只检查$fund>100,这是永远不会更新的

我该怎么做?请帮忙。。谢谢


有人能帮忙吗?谢谢。

更新答案

您正在尝试更新
$sales\u hold\u fund
,根据您的描述,您的代码应如下所示。将您的
$fund
替换为
$sales\u hold\u fund
,并对其执行操作。它还将替换您的
$balance\u 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循环和sleep连接中使用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您必须对$fund执行操作。即使您没有在代码中的任何位置使用
$fund
!将
$sales\u hold\u fund
$balance\u amount
替换为
$fund
@Sid我已更新了答案。是的,但我需要将余额保存在另一个变量中,然后将其添加到基金中。。就像这样,($fund>100){$balance_fund=$fund-100;$fund=$balance_fund;