正如标题所述,我似乎遇到了在.php文件代码中递增变量的问题,它在我在上面的变量中将acc_points增加1之后将数据库中的值acc_points修改为1。代码所做的是向php发送ajax请求,然后更新mysql数据库中的数据,然后将数据返回给js,然后js将提醒数据。
增量以某种方式将acc_points的值从5更改为1.我还考虑了问题是否与会话有关。我查看了相关信息,但无法找到解决方案。想了解这个问题的真正原因。谢谢!
以下是代码:
.php文件
<?php
require 'dbcon.php';
session_start();
$acc_points = $_SESSION["acc_points"];
$acc_id = $_SESSION["acc_id"];
if(isset($acc_points))
{
$acc_points++;
}
$result = $con->prepare(" UPDATE `points` SET `acc_points` = ? WHERE `acc_id` = ? ");
$result->bind_param("ii", $acc_points, $acc_id);
$result->execute();
if($acc_points != null)
{
$response = $acc_points;
echo $_GET['callback'] . '(' . json_encode($response) . ')';
}
else
{
$response = "'Failed. Please try again.'";
echo $_GET['callback'] . '(' . json_encode($response) . ')';
}
//connection closed
mysqli_close ($con);
?>
js文件
$(document).ready(function() {
$("#qrtest").click(function() {
{
$.ajax({
type: "GET",
url: "http://127.0.0.1/MP/appqrcode.php?callback=?",
dataType: 'JSONP',
async: false,
jsonp : "callback",
jsonpCallback: "jsonpcallback",
success: function jsonpcallback(response)
{
alert(response.acc_points);
}
})
}
});
});
答案 0 :(得分:2)
第一个问题是您在下面的代码中检查$ acc_points的值,但是您正在执行查询,无论它是否为null或
if(isset($acc_points))
{
$acc_points++;
} // if condition ends here. Insert command will always be executed.
然后在执行命令后再次检查值
if($acc_points != null) /// insert has already happend.
{
}
因此,您应该重新构建代码,但更好的是,您根本不需要这种方法。为什么不呢?
$result = $con->prepare(" UPDATE `points` SET `acc_points` = acc_points+1 WHERE `acc_id` = ? ");
这会增加数据库中已存在的值。