2013-08-06 68 views
-1

我有一個查詢即時試圖從PHP與mysql_query()函數運行,其計算方法如下MySQL查詢工作,而不是從PHP

$result = mysql_query(
    "SELECT score,name,time, 
    FIND_IN_SET(score, (SELECT GROUP_CONCAT(score ORDER BY score DESC,time ASC) FROM Highscores)) AS rank 
    FROM Highscores WHERE name = $name Order BY rank LIMIT 1"); 

這並不是出於某種原因返回任何結果,而phpMyAdmin中的相同查詢返回排名最高的高分。

我只是不明白它..任何人有任何想法?

問候 /弗雷德

+0

您是否還爲您的代碼添加了一個fetch語句,如mysql_fetch_assoc等? – Maximus2012

+0

您是否正確連接到數據庫? – David

+7

$ name需要消毒並放在單引號中 – Orangepill

回答

0

你的變量應包含在{}因爲它是一個字符串。另外,因爲名稱看起來應該是用戶生成的,所以請確保在將字符串放入查詢之前將其轉義。其他人也是對的,因爲名字可能是一個字符串,它也需要一組引號。

0

請試試這個,讓我們知道,如果有錯誤,所以我們可以對它進行調試

$result = mysql_query("SELECT score,name,time, FIND_IN_SET(score, (SELECT GROUP_CONCAT(score 
ORDER BY score DESC,time ASC) FROM Highscores)) AS rank FROM Highscores WHERE name = $name Order BY rank LIMIT 1") or die("error is: ".mysql_error()); 
var_dump($results); 
+2

難道你至少不能解決報價問題嗎? –

1

給人以這是一個嘗試: -

$qry="SELECT score,name,time, 
    FIND_IN_SET(score, (SELECT GROUP_CONCAT(score ORDER BY score DESC,time ASC) FROM Highscores)) AS rank 
    FROM Highscores WHERE name ='".$name."' Order BY rank LIMIT 1"; 
$result = mysql_query($qry); 
0

問題當然是與WHERE name = $name,應WHERE name = '$name'正如評論中指出的那樣

+0

也值得一提(我知道一個律'老,但值得提高像我這樣的人誰遇到這個)該名稱是一個MySQL關鍵字,應該包裹在''' – TT120