繁体   English   中英

计数器无法正常工作

[英]Counter not working as intended

我正在尝试从数据库中获取一些评论。我创建了一个设置为2的计数器

var limit=2;

一旦用户单击它,则注释计数设置为4,第二次计数器值设置为6 ..... etc

问题是,当我第一次单击按钮时,显示的是6条记录,而不是4条记录

$(document).ready(function(){
        var limit=2;
        $(document).on('click','.more',function(){
            limit=limit+2;
            $('#comments').load("loadComments.php",{
                limit:limit
            });
        });
    });

这是loadComment.php

 $limit=$_POST["limit"];
        $sql = "SELECT * FROM comments order by id desc limit  $limit ";  

你很亲密

$(document).ready(function(){
    var limit=2;
    $(document).on('click','.more',function(){
        limit=limit+2;
        $('#comments').load("loadComments.php?limit="+limit);
    });
});

$limit = (int)$_GET["limit"];
//$limit = intval($_GET["limit"]); //if you like functions better they are basically the same.
$sql = "SELECT * FROM comments order by id desc limit $limit"; 

首先load$_GET请求,这样你就可以通过在URL查询字符串传递限制。

然后,将限制转换为整数。 许多准备好的语句不能很好地处理限制或order by子句。 更不用说我不知道​​您正在使用哪个数据库或库。 但是强制转换应该解决大多数问题。

现在,完全可以使用load来实现您想要的功能(将html加载到容器中),但是它被视为Get类型请求。 有些人出于某种原因认为POST比GET更安全,但事实并非如此。 因此,如果这样会使您的代码更易于阅读和实现,那就好了。

描述:从服务器加载数据并将返回的HTML放入匹配的元素。

http://api.jquery.com/load/

我要提到的最后一件事是注意SQLInjection:

什么是SQL注入?

最好总是让您的查询准备好语句。 查询中的ORDER BY和LIMIT子句有点棘手。 但是因为limit只接受一个数字,所以我们可以将其intval()为int (int)或使用intval()

干杯。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM