2013-07-24 35 views
0

我目前正在使用AJAX測試平臺。我在PHP編程中遇到了愚蠢的錯誤。這是我的代碼。我收到錯誤:超過最大執行時間30秒MySQL超時錯誤

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

?> 

我該怎麼辦才能解決這個錯誤?究竟是什麼導致了錯誤?

附:我目前正在使用main.php?command = loadPeople作爲URL在瀏覽器中直接測試我的PHP腳本。

+1

@Ameer - 推薦一個較長的超時不解決最初的問題,只是延長無限循環之前,Web服務器的時間了 –

回答

2

執行查詢,然後循環遍歷結果;不要試圖在同時每次迭代重新執行查詢

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

當你清楚地剛學的基礎知識,我建議你學會使用庫MySQLi或PDO,而不是過時的MySQL庫...能夠使用準備好的語句和綁定變量不影響此查詢,但知道如何使用它們將變得更加重要以後

+0

我不是新的PHP,但幾年來,我重新定位自己的Windows編程,所以我沒有打開Dreamwaver一段時間。我只是嘗試記住一些事情,因爲你看到:) – Victor

1

我沒有寫任何PHP代碼,所以這是一個狂猜,但在這段代碼:

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

you essen tially有一個永無止境的循環,因爲$row每次都會被分配mysql_fetch_assoc(mysql_query($sqlCommandString))返回結果

你需要從變量保存mysql_query($sqlCommandString)到一個變量,然後mysql_fetch_assoc在循環