PHP比较结果与高分数据库返回重复值

时间:2013-06-05 14:05:14

标签: php jquery

我有一个jQuery函数,它将结果时间变量发送到一个php文件,该文件将结果与数据库进行比较,如果是新的高分,则返回1 ..但由于某种原因,它返回111

这是PHP:

require_once('db.php');

$sql = "SELECT score FROM highscores ORDER BY score ASC LIMIT 10";
$result = mysqli_query($con, $sql);
$score = $_POST['time'];

while($row = mysqli_fetch_array($result)) {
    if($row['score'] > $score) {
        echo 1;
    }
}

然后是jquery函数:

jQuery.ajax({
    url:'model/highscore.php',
    type:'POST',
    data: {time:totalTime},
    success:function(result){
        highScore = result;
    }
});

任何帮助都非常赞赏。

3 个答案:

答案 0 :(得分:1)

为什么不根据需要修改SQL查询?

你获得了10个最高分,并循环遍历所有分数,以检查实际高于你的分数。但实际上,如果你的分数高于最高分,你实际上不会检查。

如果您想检查,如果您的分数最高,请计算所有高于您的分数。如果没有(count = 0),你知道你得到了最高。

编辑: 这是完整的脚本:

$score = $_POST['time']; // Format "00:00:02.95";
$sql = "SELECT Count(score) as c FROM highscores WHERE score > '".mysqli_real_escape_string($score)."'";
$result = mysqli_query($con, $sql);
$count = mysqli_fetch_object($result)->c;
if(!is_null($count) && $count < 1 )
    echo 1;
}

必须添加转义函数以防止SQL注入!

您还应该为您的分数找到更好的数据类型,因为varchar不是时间戳的最佳代表。

我现在出去了。

编辑:检查$ count是否为空

答案 1 :(得分:0)

如果没有看到数据库本身,这通常是猜测,但我猜它会从您的数据库返回3个独立的分数。您需要将查询限制为1.

答案 2 :(得分:0)

这种情况正在发生,因为你正在循环浏览10个高分记录,并且它找到了3个更高的结果,所以它打印了三个时间1,就像它是

echo 1;
echo 1;
echo 1;

输出

111

您可以在echo 1

之后休息一下
echo 1;
break;