2013-08-06 195 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