2012-08-11 130 views
1

我寫了一個代碼,使用getJSON(見下文)。 FireBug返回以下錯誤信息:getJSON:NetworkError:500內部服務器錯誤

"NetworkError: 500 Internal Server Error - http://localhost:10088/test/myquery.php?query=SELECT%20tm%20FROM%20schedule%20WHERE%20val=%27BT009%27;" 

我找不出這個錯誤的原因。任何幫助,高度讚賞。

PS我在MySQL查詢瀏覽器中測試了這個SQL查詢。它已經返回了3行。

mainPage.php

<script> 
function updateList(){ 
    var query = "SELECT tm FROM schedule WHERE val='BT009';"; 

    $.getJSON(
      'myquery.php?query='+query, 
      function(data) 
      { 
       alert(data); 
      } 
    ); 

} 

$(document).ready(function() { 
    updateList(); 
}); 

</script> 

myquery.php

<?php 
include_once 'include/connect_db.php'; 

if (isset($_GET['query'])) { 
    $query = $_GET['query']; 

    $condb = connectDB(); 
    $result=execute_query($query); 
    closeDB($condb); 

    $rows = array(); 

    if ($result && mysql_num_rows($result)) { 
     while($row = mysql_fetch_array($result)) { 
      $rows[] = $row['tm']; 
     } 
    } 

    var_dump($rows); 

    echo json_encode($rows); 

} else { 
    echo json_encode("Failed"); 
} 
?> 
+1

請不要使用'mysql_ *'功能,它們不再被維護,並且社區已經開始[deprecation process](http://goo.gl/KJveJ)。相反,您應該瞭解[準備好的語句](http://goo.gl/vn8zQ)並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli的)。如果你不能決定,[本文](http://goo.gl/3gqF9)將有助於選擇。如果你想學習,[這裏是一個很好的PDO相關教程](http://goo.gl/vFWnC)。 – vascowhite 2012-08-11 10:58:13

+2

這不是你的問題的答案,但我不提起它是不負責任的。您正在JavaScript中生成一個SQL字符串並將其發送到您的服務器以供執行。這是一個非常嚴重的應用程序安全漏洞,稱爲SQL注入。不要這樣做。真的,真的,*真的*不。這是OWASP站點上的[關於它的信息](https://www.owasp.org/index.php/SQL_Injection)。 – Barend 2012-08-11 10:59:44

+2

如果我使用URL yourdomain.com/myquery.php?query="drop table schedule「,會發生什麼情況? – vascowhite 2012-08-11 11:00:56

回答

2

一個Internal Server Error (Code 500)是一個服務器端錯誤和無關,與AJAX。這通常是由錯誤的服務器端代碼引起的。你可能想檢查你的語法,並嘗試通過瀏覽器查看頁面。頁面也可能打印了一些錯誤細節。

+0

我在瀏覽器中編寫了http:// localhost:10088/test/myquery.php?query = SELECT%20tm%20FROM%20schedule%20WHERE%20val =%27BT009%27;「錯誤信息是一樣的。 – Gusgus 2012-08-11 11:03:52

0

我打算猜測服務器很難理解你的查詢參數。嘗試編碼它:

'myquery.php?query='+encodeURIComponent(query) 

像別人說的,你在做什麼是不安全的。您不應該傳遞查詢來執行服務!

編輯:另一種可能是你沒有傳遞三個參數到$ .getJSON()。嘗試:

$.getJSON(
    'myquery.php', 
    {query: query}, 
    function(data) { 
     alert(data); 
    } 
); 
0

嘗試使用firebug.Run當你在browser.It執行這段代碼的螢火蟲會給出錯誤的原因,並在校正required.Hope它將幫助。