如何将插入数据库的值更改为从JavaScript / ajax创建的变量?

时间:2018-12-27 14:14:13

标签: php sql ajax

我创建了一个路线规划器,用户在旅途中上班并根据他们使用的交通工具类型获得积分,然后我想将他们累积获得的积分存储在我创建的数据库中,但是我遇到了问题使用路由计划程序中的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”变量。

1 个答案:

答案 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();