0

我目前正在开发一个 AJAX 测试平台。我在 PHP 编程中遇到愚蠢的错误。这是我的代码。我收到错误消息:Maximum execution time of 30 seconds exceeded

<?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" );

?>

我能做些什么来解决这个错误?究竟是什么导致了错误?

PS我目前正在使用 main.php?command=loadPeople 作为 URL 直接在浏览器中测试我的 PHP 脚本。

4

2 回答 2

3

执行查询,然后遍历结果;不要尝试在 while 的每次迭代中重新执行查询

$resultset = mysql_query($sqlCommandString);
while ($row = mysql_fetch_assoc($resultset)) {

由于您显然只是在学习基础知识,因此我建议您学习使用 MySQLi 或 PDO 而不是已弃用的 MySQL 库...能够使用准备好的语句和绑定变量不会影响此查询,但知道如何以后使用它们将变得更加重要

于 2013-07-24T08:42:28.440 回答
1

我已经有一段时间没有编写任何 PHP 代码了,所以这是一个疯狂的猜测,但在这段代码中:

while($row = mysql_fetch_assoc(mysql_query($sqlCommandString)))

你基本上有一个永无止境的循环,因为$row每次都会被分配mysql_fetch_assoc(mysql_query($sqlCommandString))返回结果

您需要保存mysql_query($sqlCommandString)到一个变量中,然后mysql_fetch_assoc在循环中从该变量中保存

于 2013-07-24T08:43:09.630 回答