【问题标题】:For Loop is not looping the numbers I wantFor Loop 没有循环我想要的数字
【发布时间】:2018-07-08 14:17:21
【问题描述】:

我正在尝试使用 for 循环作为发送多个数据的方法,但是,我要循环的数字不是我要发送的数字。例如,当我分配 10001 - 10005 时,它只存储在数据 10001 - 10002 中。每次无论我分配多少不同的数量,它都只存储 2 个数据,这是我要分配的范围中的前 2 个数字,而不是我需要的数量。我相信是我循环的方法出错了。请帮忙。

@processallocate.php

查看为文本

<?php

for ($cardfrom = $cardfrom; $cardfrom <= $cardto; $cardfrom++) {
    if ($cardfrom) {
        $mysqli = new mysqli(spf, dbuser, dbpw, db);
        $stmt = $mysqli->prepare("INSERT INTO allocation 
(cardfrom) 
VALUES (?)");
        $stmt->bind_param("s", $cardfrom);
        $result = $stmt->execute();
        if ($result == true && $stmt->affected_rows > 0) {
            echo "<b>" . $check . "</b><br />";
        }
        else {
            echo '<p>Taxi Voucher has already been allocated</p>';
            break;
        }

        $stmt->close();
        $mysqli->close();
    }
    else {
        echo '<p>Error</p>';
        echo '<p>Please <a href="allocation.php">Click Here</a> to resubmit</p>';
    }
}

?>

【问题讨论】:

  • 您能解释一下您的代码并仅列出问题所在吗?有了所有这些代码并且没有太多解释,这很困难。此外,您的代码使用的是 MySQL,因此难以重现。
  • @AnthonyB 您好,我已经编辑过,并简要说明出了什么问题,如果您仍然不明白,请告诉我
  • 如果你 var_dump($cardfrom);var_dump($cardto); 会发生什么?
  • 旁注:不需要多次连接和准备。看到这个answer
  • @WOUNDEDStevenJones 我将为 $cardfrom 获得 1001,而 $cardto 将是 1005,我相信我成功引入了 cardfrom 和 cardto,它只是循环一次,即 1001 和 1002,但是不是 1003、1004、1005

标签: php web


【解决方案1】:

我认为问题在于您的 IF..ELSE 条件。您正在使用 $cardfrom 作为迭代计数器。

然后在循环内部,您正在检查 $cardfrom 的计算结果是否为任何“真实”值(布尔 TRUE,或非空、非 NULL 值或非零数字)

只有当它为真时,你才在做 mysql 插入部分!

所以请检查您的代码中的逻辑,看看它是否符合您的期望!

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-11
    • 2021-10-15
    • 1970-01-01
    • 2011-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多