如何在数据库中增加值?

时间:2015-08-11 19:51:54

标签: php jquery mysql

我有一张名为Stats的表。统计数据有4列:id,ip,count和date。 count是ip点击我网站上广告的点击次数。每次用户点击广告时,其计数数量都会增加1.如何将计数增加1并在数据库中更新?这是我的代码,由于某种原因它不起作用。当我点击div时,它不会刷新...所以整个代码块都没有执行。请注意,我已经在用户输入我的网站时捕获了用户的IP,如果他们点击我的广告,则会在数据库中增加和更新计数。

<script>
    $(document).ready(function()
    {
        $("#ad").click(function()
        {
            <?php
                $queryTot = "SELECT `count` AS total FROM Stats WHERE ip = '$ip'";
                $resultTot = $db->query($queryTot);
                $data = $resultTot->fetch_assoc();
                $count = $data["total"] + 1;
                $insert = $db->prepare("UPDATE Stats(count) WHERE ip = '$ip' VALUES(?)");
                $insert->bind_param('i', $count);
                $insert->execute();
                $insert->close();
            ?>
            location.reload();
        })
    })

</script>

2 个答案:

答案 0 :(得分:0)

你的答案中有很多要考虑的问题。

但很可能你应该使用AJAX解决方案来完成它,并避免HTML页面中的每个SQL查询,因为根据所有basic security and code maintenance POVs,保持SQL查询肯定不是一个好的实践。

在不知道您的项目结构,甚至是您的想法的情况下,无法正确地重新编写您的代码,您必须将此答案作为一个重要的起点。

基本上,您必须在服务器端应用程序中定义一个以JSON格式返回纯数据的方法,然后根据事件使用AJAX访问此方法(例如,单击) ,接收它的响应并修改你的客户端,可能使用jQuery和JS。

我希望这个答案可以帮到你。

答案 1 :(得分:0)

我为你写了一个简短的例子,你可以继续为实现你的需要而继续发展。这是基本的想法。

HTML

<input type="hidden" id="ip" value="<?php echo $_SERVER['REMOTE_ADDR'];?>"/>

的jQuery

var ip = $('#ip').val();

$(document).ready(function(){
   $('#ad').on('click',function(){
      $.ajax({
          type: 'POST',
          url: 'ajaxUpdateDatabase.php',
          data: 'ip='+ ip,
          success: function(response){
              console.log(response)
              //send the user to the ad's page here for example
              //you could use location.href='url-to-add-here';
              //or if you really want to reload the page for a reason I fail to understand, use location.reload();
              }
          });
      });
   });

PHP(ajaxUpdateDatabase.php)

//please note that using UPDATE requires that there is previously an entry with this IP address.
//example using PDO... 

$sql = 'SELECT * FROM stats WHERE ip = ?';
$stmt = $pdo->prepare($sql);
$stmt->execute(array($_POST['ip']));

if($stmt -> rowCount() > 0){
    $sql = 'UPDATE stats SET count = count + 1 WHERE ip = ?';
    $stmt = $pdo->prepare($sql);
    $stmt->execute(array($_POST['ip']));
    }
else{
    //ip-address was not found in the database
    //insert query goes here
    }