1

我正在尝试一段行为奇怪的代码。

我正在使用带有 JQuery masonry 插件的 Paul Irish 无限滚动来显示内容。

内容通过sql拉取,有固定数量,目前为20。

这意味着页面将从数据库中加载前 20 行内容,然后在向下滚动时加载接下来的 20 行。

我在几页上有这个功能,除了一页外它工作正常。

在此页面上,它不是加载最近的 20 个帖子,而是加载该特定字段中的每个帖子。有些有超过 5000 个帖子,所以它确实使页面崩溃。你可以想象的一个主要问题。

我一直在尝试调整代码以查找异常并将其范围缩小(我认为)到一个特定的部分。

这是在有效页面上使用的代码:

function index() {
    $userID = false;
    $order = false;
    $limit = $this->config->item('pin_load_limit');
    $page = $this->uri->segment(3, 1);

    $nextOffset = ($page -1) * $limit;
    $nextPage = $page +1;
    $sql = "SELECT *
                FROM
                    pins";

    if ($userID)
        $sql .= " WHERE
                    user_id= $userID ";

    if ($order) {
        $sql .= " ORDER BY
                    ' $order'";
    } else {
        $sql .= " ORDER BY time DESC";
    }
    $sql .= " LIMIT $nextOffset,$limit";

    $query = $this->db->query($sql);
    if ($query->num_rows() > 0) {
        $row = $query->result();
    } 

这是页面上不起作用的代码:

    function getEachBoardPins($id,$limit=false)
{
    $sql    = "SELECT 
                    *
                FROM
                    pins
                WHERE
                    board_id = $id
                ORDER BY time DESC";
    if($limit)
        $sql .=" LIMIT 0 ,$limit" ;
    $query  = $this->db->query($sql);
    return $query->result();
}

我知道这与引脚负载限制有关,但我尝试将代码添加到后者但没有成功。

也许这里有更多了解它的人可以提供一些更好的见解?

4

1 回答 1

0

我想很可能当您调用“getEachBoardPins”函数时,您没有设置第二个参数,因此,它默认为 false,因此,没有附加限制 SQL,因此 select 语句将运行整个语句。

于 2013-06-09T07:43:51.080 回答