我目前正在开发一个AJAX测试平台。我在PHP编程中遇到了愚蠢的错误。这是我的代码。我收到错误:超过30秒的最长执行时间。
<?php
$resultFromJson;
$databaseConnection = mysql_connect("localhost", "root", "password");
if($databaseConnection)mysql_select_db("fastdata", $databaseConnection);
else echo mysql_error($databaseConnection);
if(isset($_GET['command'])){
switch($_GET['command']){
case "loadPeople":
{
$sqlCommandString = "SELECT * FROM `people` LIMIT 0 , 30";
$people = array();
$index = 0;
while($row = mysql_fetch_assoc(mysql_query($sqlCommandString))){
$people[$index] = $row;
$index++;
}
echo json_encode( $people );
}
break;
}
}
if(!isset($_GET['command']))echo json_encode( "Error#001" );
?>
我该怎么做才能解决这个错误?究竟是什么导致错误?
P.S。我目前正在浏览器中使用main.php?command = loadPeople作为URL直接测试我的PHP脚本。
答案 0 :(得分:3)
执行查询,然后循环结果;不要尝试在while
的每次迭代中重新执行查询$resultset = mysql_query($sqlCommandString);
while ($row = mysql_fetch_assoc($resultset)) {
由于您显然只是学习基础知识,我建议您学会使用MySQLi或PDO而不是弃用的MySQL库...能够使用预处理语句和绑定变量不会影响此查询,但知道如何使用它们将在以后变得更加重要
答案 1 :(得分:1)
我暂时没有编写任何PHP代码所以这是一个疯狂的猜测,但在这段代码中:
while($row = mysql_fetch_assoc(mysql_query($sqlCommandString)))
你基本上有一个无休止的循环,因为每次$row
返回结果时都会分配mysql_fetch_assoc(mysql_query($sqlCommandString))
您需要将mysql_query($sqlCommandString)
保存到变量中,然后在循环中将该变量保存为mysql_fetch_assoc