MySQL超时错误

时间:2013-07-24 08:38:51

标签: php mysql

我目前正在开发一个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脚本。

2 个答案:

答案 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