使用PHP MySQL更新玩家得分

时间:2014-11-05 14:07:38

标签: php mysql

我有一个用户表,我想在每次用户完成游戏时更新分数。 Unityscript部分工作正常,但在我将分数发布到数据库后,它显示为加倍或三倍。我将得分作为int发布,表格列也是int格式。我的PHP看起来像这样:

try {

   $db = new PDO("mysql:host=$host;dbname=$dbname", $db_user, $db_pass);
   $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

   $data = array(
       ':username' => $_POST['username'],
       ':score' => $_POST['score']);

   $statement = $db -> prepare ("UPDATE users SET score = score + :score
                                 WHERE username = :username"); 
   $statement->execute($data);
}
catch(PDOException $e) {
   echo $e->getMessage();
}

感谢任何帮助或建议。

2 个答案:

答案 0 :(得分:0)

您正在使用预准备语句,但您仍然可以通过直接实现$score变量来允许注入。使用用户名对得分做同样的事情。

双人或三人是什么意思?你的意思是这个数字是两倍或三倍吗?如果是这样,请尝试使用SELECT语句获取分数并使用PHP进行数学运算。然后,UPDATE users表。

这样做可以让您更好地了解自己做错了什么。您是否尝试在您的尝试中回显score的值并捕获以查看值是否重复?代码可能不止一次运行。

答案 1 :(得分:0)

$statement = $db -> prepare ("UPDATE users SET score = :score
                             WHERE username = :username"); 

使用它,我认为它将起作用