首页 > 解决方案 > 我的无限滚动似乎不适用于 PDO 语句

问题描述

所以我的页面有一个无限滚动设置。数据加载并且在没有无限滚动的情况下看起来不错,当我将 LIMIT 添加到我的查询时,它似乎根本不想正常工作。当我 var_dump($start) 或 ($limit) 他们都显示正确的值。似乎发生的事情是它只抓取并显示前 5 个结果,而不是在我的 AJAX 代码中将 5 添加到 $start 。

这是我获取数据的代码:

if(isset($_POST['start']) && isset($_POST['limit'])){
    $start = $_POST['start'];
    $limit = $_POST['limit'];
}

$query = "SELECT        
        count(replies.reply_topic) as replyCount,
        topics.topic_id,
        topics.topic_subject,
        topics.topic_date,
        topics.topic_cat,
        topics.topic_creator,
        topics.topic_likes,
        users.user_id,
        users.username,
        profile.profile_id,
        profile.profile_pictureMain,
        profile.profile_users
        FROM
            topics
        LEFT JOIN
            users
        ON
            topics.topic_creator = users.user_id
        LEFT JOIN
            replies
        ON
            replies.reply_topic = topics.topic_id
        LEFT JOIN
            profile
        ON
            profile.profile_users = users.user_id
        GROUP BY
            topics.topic_id
        ORDER BY
            topics.topic_likes DESC
        LIMIT :start, :limit  //<-When I add this line it will only display 5 items max
        ";

$stmt = $conn->prepare($query);
$stmt->bindParam(':start', intval($start), PDO::PARAM_INT);  //<-not sure if bindParam is causing an issue...intval() is needed in order to prevent an SQL error
$stmt->bindParam(':limit', intval($limit), PDO::PARAM_INT);
$stmt->execute();
$returnAmt = $stmt->fetchAll();
if($stmt->rowCount() > 0){
    $returnValues = "";
    foreach($returnAmt as $row){ 
        $returnValues .= 

        'data to display';
    }
    echo $returnValues;
    exit();
}else{
    exit('No more results');
}

然后在我的 jquery 文件中我有 AJAX 调用

function infiniteScrollData(){

if(reachedMax){
    return;
}

$.ajax({
        method: "POST",
        url: "sortResults.php",
        dataType: "text",
        data:  {
            infiniteScrollData: 1,
            start: start,
            limit: limit
            },
        success: function(returnValues){
            if(returnValues == "No more Results"){
                reachedMax = true;
            }
                else{
                    start += limit;
                    $("#rowDisplayResults").append(returnValues);
                }
        }
    });
}

最后我在主页上显示数据:

<div id="rowDisplayResults">                
    <!--Display results here-->                     
</div>

<script type="text/javascript">
//Variables for infinite scroll
var start = 0;
var limit = 5;
var reachedMax = false;

$(window).scroll(function(){
    if($(window).scrollTop() == $(document).height() - $(window).height()){
        infiniteScrollData();
    }
});

$(document).ready(function(){

    //infinite scroll
    infiniteScrollData();

});

</script>

提前致谢!

标签: javascriptphpjquery

解决方案


推荐阅读