将变量递增1会在php中将变量值更改为1

时间:2017-02-02 11:19:57

标签: javascript php mysql

正如标题所述,我似乎遇到了在.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);

                    }
            })
        }
    });
});

1 个答案:

答案 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` = ? ");

这会增加数据库中已存在的值。