代码有效,但需要很长时间才能加载“超过 30 秒的最大执行时间”以及错误

Posted

技术标签:

【中文标题】代码有效,但需要很长时间才能加载“超过 30 秒的最大执行时间”以及错误【英文标题】:Code works but takes a long time to load "Maximum execution time of 30 seconds exceeded" along with the error 【发布时间】:2019-09-29 18:09:12 【问题描述】:

它给出了数据库的输出以及上述错误:第 7 行的“超过 30 秒的最大执行时间”。

<?php
require_once 'config.php';//content below
$sql = "select *from users";
$selected = $mysqli->query($sql);
$row = "random";
while($row!=="null")
    $row = $selected->fetch_assoc();
    echo $row['username']; 

在 config.php 中:

<?php
DEFINE('DB_server','localhost');
DEFINE('DB_username','root');
DEFINE('DB_password','');
DEFINE('DB_name','demo');
$mysqli = new mysqli(DB_server,DB_username,DB_password,DB_name);
if($mysqli===NULL)
    die("ERROR: Could not connect. " . $mysqli->connect_error);

?>

【问题讨论】:

在我看来你好像永远在循环播放?什么可能导致 $row 为 "===" 'null' ? $row永远等于"null" 【参考方案1】:

您正在创建一个无限循环。 $row 永远不会等于字符串"null",因为$row 是一个数组或字符串"random"

两件事。首先,您应该启用error reporting for MySQLi。它应该始终打开。在new mysqli 之前使用mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

<?php
DEFINE('DB_server','localhost');
DEFINE('DB_username','root');
DEFINE('DB_password','');
DEFINE('DB_name','demo');

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli(DB_server,DB_username,DB_password,DB_name);
?>

其次,当您想要循环查询结果时,您可以简单地使用 foreach。

<?php
require_once 'config.php';//content below
$sql = "select *from users";
$selected = $mysqli->query($sql);
foreach($selected as $row) 
    echo $row['username']; 

【讨论】:

【参考方案2】:

来自fetch_assoc (https://www.php.net/manual/en/mysqli-result.fetch-assoc.php) 的文档,

[...]

while ($row = $result->fetch_assoc()) 
    printf ("%s (%s)\n", $row["Name"], $row["CountryCode"]);


[...]

这就是你应该如何在循环中调用它。

【讨论】:

请注意,当涉及到 mysqli 的使用时,PHP 文档提供了非常糟糕的代码示例。启用exception mode 比使用die() 显示错误要好得多,并且使用foreach 循环通常比while 循环简单。

以上是关于代码有效,但需要很长时间才能加载“超过 30 秒的最大执行时间”以及错误的主要内容,如果未能解决你的问题,请参考以下文章

带有recyclerviews的碎片需要很长时间才能加载

来自 url 的 UIImage 需要很长时间才能快速加载

IconData 需要很长时间才能加载并且不显示图标

谷歌图表需要很长时间才能加载

PHP页面需要很长时间才能加载

从图像 URL 加载图像需要很长时间才能显示