我创建了一个路线规划器,用户在旅途中上班并根据他们使用的交通工具类型获得积分,然后我想将他们累积获得的积分存储在我创建的数据库中,但是我遇到了问题使用路由计划程序中的JavaScript变量,以便将其插入数据库中,因为我不知道要使用正确的SQL语句。
我已通过将我使用的数据库主机中的字段更改为SQL语句并将其从“ INSERT INTO”更改为“ UPDATE”。但是,我希望累积存储点,而不要覆盖它们。
我已经更改了页面上的JavaScript,并且当使用正确的SQL语句时,PHP可以正常工作。
<?php
include('Link.php');
$stmt = $mysqli->prepare("UPDATE `Employees` SET `carbo_points` = 400 WHERE
`Employees`.`employee_id` = 1; ");
$stmt->bind_param('i', $_POST['CarboPoints']);
$stmt->execute();
$stmt->close();
echo "Carbo Points have been stored.";
?>
这会将数据库中ID为1的员工的用户的Carbo Points更改为400。但是,我想要一个有效的SQL语句,其中用户将从特定旅程中获得的“ CarboPoints”添加到当前总数中。但是我不知道如何在SQL语句中包含在ajax中创建的“ CarboPoints”变量。
答案 0 :(得分:1)
您似乎有几个问题:
1.- 添加代替覆盖。您可以更改sql以添加点:SET carbo_points = carbo_points + new_points
。
2.- 从ajax参数获取点。只需使用?
到parametrize查询:carbo_points = carbo_points + ?
即可。
总结:
$stmt = $mysqli->prepare("UPDATE `Employees`
SET `carbo_points` = `carbo_points` + ?
WHERE `Employees`.`employee_id` = 1; ");
$stmt->bind_param('i', $_POST['CarboPoints']);
$stmt->execute();
$stmt->close();