代码有效,但需要很长时间才能加载“超过 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 秒的最大执行时间”以及错误的主要内容,如果未能解决你的问题,请参考以下文章