【问题标题】:Maximum execution time of 120 seconds exceeded in C:\wamp64\www\C:\wamp64\www\ 中超过 120 秒的最大执行时间
【发布时间】:2018-05-13 03:04:03
【问题描述】:

在 C:\wamp64\www.... 中超过了 120 秒的最大执行时间。

我希望我的循环不是无限的。

if(isset($_POST['del']))
    {
        $id = $_GET['id'];
        $st = "Y";
            $stmtp = $user_home->runQuery('SELECT * FROM invoice WHERE BRN = :inv ORDER BY Sr ASC ');
    $stmtp->bindParam(':inv',$id);
    $stmtp->execute();
    $rowcd = $stmtp->fetch(PDO::FETCH_ASSOC); 
    if($stmtp->rowCount() > 0)
    {
    while($rowcd)
        {
            extract($rowcd);
        $stmtd = $user_home->runQuery('UPDATE invoice 
                                         SET State=:uname                                            
                                       WHERE Sr = :crn');
            $stmtd->bindParam(':crn',$Sr);
            $stmtd->bindParam(':uname',$st);
            $stmtd->execute();
        }
    }
    }

Select 语句有 5 行。 (有时可能会更少)

【问题讨论】:

  • 该 SELECT 语句有多少行?
  • @LordNeo Select 语句有 5 行。 (有时可能会更少)

标签: php while-loop


【解决方案1】:

根据您对bindParam() 的使用,我假设您正在使用已抽象为类的 PDO。

您只需调用一次fetch(),它会返回一行,然后对其使用while 语句。它永远不会在循环中更新,所以它总是评估为TRUE,从而继续循环。

要测试这个理论,您可以在数组上运行一个简单的循环,该循环一直运行到断点:

<?php
while(array(1,2,3)){
    echo date('H:i:s');
}

我不完全确定$Sr 变量的来源,但根据您第一个查询中的ORDER BY 子句,它会在第一个查询中返回。

因此,您需要像这样每次循环并获取下一行:

...
while ($row = $stmtp->fetch()) {
    $stmtd = $user_home->runQuery('UPDATE invoice 
                                         SET State=:uname                                            
                                       WHERE Sr = :crn');
    $stmtd->bindParam(':crn',$row['Sr']);
    $stmtd->bindParam(':uname',$st);
    $stmtd->execute();
}
...

【讨论】:

  • 它正在离开第一个查询并从第二个开始更新...\
  • 什么意思?
  • 假设循环开始时有 3 行,查询从第 2 行更新,保持第 1 行不变。
  • 我们不知道能够进一步调查的表结构,但最终,这似乎是一个不同的问题或问题。 while 循环是否无法正常工作? (我指的不是内部更新查询,而是循环的次数)
【解决方案2】:

这是一个无限循环。

你在做:

$rowcd = $stmtp->fetch(PDO::FETCH_ASSOC);

然后评估它:

while($rowcd)

什么时候应该:

while($rowcd = $stmtp->fetch(PDO::FETCH_ASSOC))

而不是两行

【讨论】:

  • 非常感谢这两个答案都给了我解决方案!
猜你喜欢
  • 1970-01-01
  • 2016-09-04
  • 2015-12-06
  • 1970-01-01
  • 1970-01-01
  • 2020-04-29
  • 2013-04-01
  • 1970-01-01
相关资源
最近更新 更多