【问题标题】:PHP/SQL Stuck in an inifinite while loop possibly due to a bad query?PHP/SQL 可能由于查询错误而陷入无限循环?
【发布时间】:2018-12-01 04:08:36
【问题描述】:
$query = "SELECT DISTINCT users FROM computers WHERE ComputerName='EN4073254W'";
while ($user_name = mysqli_fetch_array(mysqli_query($cxn, $query))) { // print out user names
    printf("<li><a href='%s'>%s</a>\n", $user_name[0], $user_name[0]);
}

我正在运行一个查询以检查基于ComputerNamedistinct users 所有这些都是通过一个while 循环运行的,我按照我找到的here 的示例进行了此操作。在 phpMyAdmin 中运行此查询会产生正确的输出,因此我大致确信我的查询是正确的。我还花时间在 phpStorm 的调试器中逐行检查这一点,但可惜它让我无法很好地了解正在发生的事情(它只是一遍又一遍地重复自己)。

<li><a href='foo'>foo</a>
<li><a href='foo'>foo</a>
<li><a href='foo'>foo</a>
<li><a href='foo'>foo</a>
<li><a href='foo'>foo</a>
<li><a href='foo'>foo</a>
<li><a href='foo'>foo</a>
...

想要的结果应该是这样的

<li><a href='foo'>foo</a>
<li><a href='bar'>bar</a>

【问题讨论】:

  • 您已将查询执行置于循环条件中。这就是为什么。
  • 你能提供一个例子作为答案吗?

标签: php sql mysqli while-loop


【解决方案1】:

您正在 while 循环中执行查询,因此它的运行时间无限。

 while ($user_name = mysqli_fetch_array(mysqli_query($cxn, $query))) // runs infinite time 

将上面的行改为

$result = mysqli_query($cxn, $query);
while ($user_name = mysqli_fetch_array(($result,MYSQLI_NUM)))

【讨论】:

    【解决方案2】:
    $query = "SELECT DISTINCT users FROM computers WHERE ComputerName='EN4073254W'";
    $stmtQuery = mysqli_query($cxn, $query);
    while ($user_name = mysqli_fetch_array($stmtQuery)) { 
        printf("<li><a href='%s'>%s</a>\n", $user_name[0], $user_name[0]);
    }
    

    【讨论】:

      【解决方案3】:

      您的查询很好,但每次检查是否退出 while 循环并获取第一项时,您都会重新执行它。

      你想要更多类似的东西: $users = mysqli_fetch_array(mysqli_query($cxn, $query)) foreach ($users as $user_name) { ... }

      【讨论】:

      • 这种工作,但吐出双倍的一切,这似乎导致我的服务器挂起。
      猜你喜欢
      • 1970-01-01
      • 2021-11-28
      • 1970-01-01
      • 2020-06-09
      • 1970-01-01
      • 2020-05-13
      相关资源
      最近更新 更多