我有一个用户表,我想在每次用户完成游戏时更新分数。 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();
}
感谢任何帮助或建议。
答案 0 :(得分:0)
您正在使用预准备语句,但您仍然可以通过直接实现$score
变量来允许注入。使用用户名对得分做同样的事情。
双人或三人是什么意思?你的意思是这个数字是两倍或三倍吗?如果是这样,请尝试使用SELECT
语句获取分数并使用PHP进行数学运算。然后,UPDATE
users
表。
这样做可以让您更好地了解自己做错了什么。您是否尝试在您的尝试中回显score
的值并捕获以查看值是否重复?代码可能不止一次运行。
答案 1 :(得分:0)
$statement = $db -> prepare ("UPDATE users SET score = :score
WHERE username = :username");
使用它,我认为它将起作用