2014-04-14 33 views
0

我是新來的,所以我有一些問題。我正在開發一個網站,但有一些問題。 我有標籤的地圖,onclick調用一個函數「getObject(this.alt)」。GET方法返回500內部服務器錯誤

function getObjects(object){ 
console.log(object); 
$.get("/sites/map/objects.php?t="+object, function(data) { 
    $('#answer').html(data); 
}); 

它執行腳本object.php爲T =區域標籤的alt屬性,將objects.php連接到MySQL和返回一個對象行,但我得到這樣那樣的錯誤:

GET http://some-site.com/sites/map/objects.php?t=some_object 500 (Internal Server Error) jquery-latest.js:8706 

你能請幫幫我? :)

這是PHP代碼。 對象是HTML文件中區域標籤的alt屬性。它得到了這個alt,並從中返回帶有這個alt名字的DB行。

<?php 
$object = $_GET['t']; 
echo $object; 
$con=mysqli_connect("server_adr","username","password","db_name"); 
// Check connection 
if (mysqli_connect_errno()) 
{ 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 
$con->set_charset("utf8"); 
if($object!='all'){ 
$result = mysqli_query($con,"SELECT * FROM map WHERE `city`='$object' ORDER BY tips"); 
} 
else{ 
$result = mysqli_query($con,"SELECT * FROM map ORDER BY tips"); 
} 
$old_tips = ''; 
$old_city = ''; 
while($row = mysqli_fetch_array($result)) 
    { 
    $tips = $row['tips']; 
    $city = $row['city']; 
    if($old_tips!=$tips){ 
     echo '<strong>'.$tips.'</strong><br>'; 
    } 
    if($old_city!=$city){ 
     echo $row['city'] . '<br>'; 
    } 
    echo $row['title'] . ' - <a href="'.$row['web'].'">' . $row['web']. '</a>'; 
    echo "<br>"; 
    $old_tips = $row['tips']; 
    $old_city = $row['city']; 
    } 
?> 

和Web服務器信息:

  • 的Apache/2.2.21(FreeBSD的)了mod_ssl/2.2.21的OpenSSL/0.9.8q DAV/2 PHP/5.3.8用了Suhosin貼片SVN /1.7.1
  • MySQL客戶端版本:59年5月1日
  • PHP擴展:mysql的
+6

「500(內部服務器** **錯誤)」 - 問題是在PHP。檢查你的PHP日誌中的錯誤,然後修復它們。 –

+0

您的服務器端代碼問題 –

+1

在此處發佈您的php代碼並或附上'object'詳細信息 –

回答

1

mysqli_connect拋出異常,如果不安裝或啓用的mysqli模塊。你會激活此模塊中的php extions文件

,或者如果你的數據庫是MySQL數據庫,而不是mysqli的, 嘗試從mysqli改變mysql在你的PHP代碼文件

+0

PHP擴展名顯示mysql,但是當我將mysqli更改爲mysql時,沒有任何更改。 – veiss

+0

不!你需要在你的PHP擴展文件中做什麼是UNCOMMENT LINE where WHERE'mysqli'。或者如果你使用的是mysql數據庫,那麼在你的php文件中使用的函數是'mysql _...'而不是'mysqli _...' – Bellash

+0

對不起,這是我的理由。擴展名顯示'mysql'和我在我的php文件中所做的更改。所以現在我做了一些事情,mysql_error()顯示「在讀取初始通信包時丟失了與MySQL服務器的連接」,系統錯誤:61'我認爲比'Internal Server Error'好。我無法進入服務器配置,有沒有解決這個問題的另一種方法? – veiss

0

你的錯誤是在PHP 。

添加到您的PHP腳本的頂部:

ini_set("log_errors", 1); 
ini_set("error_log", "/tmp/php-error.log"); 

然後檢查日誌:

tail -f /tmp/php-error.log 
0

所以我解決的問題是這樣的。 嘗試PHP擴展,將mysqli_...更改爲mysql_... 檢查SQL用戶特權並將其更改爲適合我的問題。 而我有數據庫地址寫入「本地主機」,因爲它運行在其他服務器上,而不是我的,但當給予mysql_connect()地址就像在IP中,然後建立連接的權利。 它的工作,謝謝大家的幫助。 :)

現在看起來是這樣的:

$connection = mysql_connect("db_addr","sql_user","password"); 
// Check connection 
if (!$con) 
{ 
    die ("Could not connect: " . mysql_error()); 
} 
echo "Connection successfully <br>"; 

mysql_select_db("database_name"); 
mysql_set_charset('utf8' , $connection); 
相關問題