<script>
<!--
var milisec=0
var seconds=0
document.d.d2.value='0'
function display(){
if (milisec>=9){
milisec=0
seconds+=1
}
else
milisec+=1
document.d.d2.value=seconds+'.'+milisec
setTimeout("display()",100)
}
display();
setInterval(function(){
$.post("procesare.php",{score: seconds},function(data){
$('#text').html(data);
});
},1000);
//-->
</script>
这是我的 JS 代码。我试图将用户在我的索引上的时间存储在数据库中。这是我的“procesare.php”,我在其中调用查询:
if(isset($_POST['score'])){
$result = mysql_query("SELECT nickname, score FROM users ORDER BY score DESC");
$rank = 1;
if (mysql_num_rows($result)) {
while ($row = mysql_fetch_assoc($result)) {
echo "<br />{$rank}.
{$row['nickname']} -->
{$row['score']}";
$rank++;
}
}
$qry="SELECT score FROM users WHERE username='{$_SESSION['user']}'";
$result = mysql_query($qry) or die(mysql_error());
$result=mysql_fetch_row($result);
$total = $_POST['score'] + $result[0];
$qry="UPDATE users SET score='$total' WHERE username='{$_SESSION['user']}'";
mysql_query($qry) or die(mysql_error());
我的问题是JS计时器工作正常,一秒一秒,但在数据库中,却是一片困惑。时间随机增加......我不明白为什么......
提前致谢!
最佳答案
我不知道你最终想要做什么,但这似乎有点可疑。
我也不清楚“数据库困惑”是什么意思。对于它的值(value),您可能应该像这样更新:
$qry="UPDATE users SET score = score + '$_POST['score']' WHERE username='{$_SESSION['user']}'";
您不需要单独的查询来查找现有分数。只需增加它即可。您还应该注意 sql 注入(inject)。
关于javascript - JS定时器和mysql不同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33045104/