2015-08-31 65 views
0

我是AJAX的新手,我試圖在AJAX中做一個簡單的MySQL查詢,但它不起作用,響應是500內部服務器錯誤。AJAX HTTP請求問題與MySQL

我搜索了在這個論壇和其他網站的答案,但我從來沒有找到我的問題的答案。

基本上,我的應用程序,用戶需要寫一個假,然後點擊「播放」和AJAX功能被稱爲onClick功能,使一個簡單的MySQL查詢:

$.ajax({ 
      url: "check_pseudo.php", 
      method: "GET", 
      data : { pseudo : input}, 
      error: function() { 
       alert("Une erreur est survenue"); 
      }, 
      success: function(response) { 
       alert(response); 
      } 
     }); 

PHP/MySQL的:

$pseudo = $_GET["pseudo"]; 

$req = $bdd->prepare('SELECT ? FROM pseudo'); 
$req->execute(array($pseudo)); 

$reponse = $req->fetch(); 

if ($reponse) { 
    echo "This pseudo does exist"; 
}else{ 
    echo "Pseudo not found"; 
} 

此代碼向控制檯調試器發送'GET http://localhost:8888/check_pseudo.php?pseudo=oianf 500(內部服務器錯誤)'。

我該如何解決這個問題?

的Merci :)

+0

500服務器錯誤,什麼是錯在你的PHP。嘗試使用'$ req-> bind_param('s',$ pseudo)替換'$ req-> execute(array($ pseudo));'。 $ req->執行();'。如果這樣不能解決問題,請嘗試從底部到頂部刪除部分PHP代碼,直到找不到500錯誤,找到curlpit。或者看看你的服務器日誌。 – blex

+0

查詢應該可能是'SELECT * FROM pseudo WHERE someColumn =?' – Barmar

+2

或者'SELECT * FROM someTable WHERE僞=?' – Barmar

回答

0

你不能做到這一點:

$req = $bdd->prepare('SELECT ? FROM pseudo'); 
$req->execute(array($pseudo)); 

使用prepare()?在它生成的查詢還需要額外的投入。你需要填寫?。 (檢查出PHP's mysqli::prepare)。

你需要做的是這樣的:

$req = $bdd->prepare('SELECT ? FROM pseudo'); 
$req->bind_param("s", $pseudo); 
$req->execute(); 

...但即使是不相當似乎是正確。通常我們不會傳遞要在查詢參數中選擇的字段。我們通常會做這樣的事情:

$.ajax({ 
    url: "users.php", 
    method: "GET", 
    data : {user_id: input_id}, 
    error: function() { 
    alert("Error! ...Something went wrong."); 
    }, 
    success: function(response) { 
    alert(response); 
    } 
}); 

內。然後users.php我們將有:

$user_id = $_GET["user_id"];  
$req = $bdd->prepare('SELECT * FROM users where user_id=?'); 
$req->bind_param("i", $user_id); 
$req->execute(); 
$reponse = $req->fetch(); 

if ($reponse) { 
    echo "This user does exist"; 
} else { 
    echo "User not found"; 
}