【问题标题】:How to fetch data in mysql with next and previous如何使用下一个和上一个在mysql中获取数据
【发布时间】:2017-10-05 23:22:21
【问题描述】:

我有一个包含超过 5,000 条记录的数据库,我想获取 50 行,然后在用户单击下一个时获取下一个 50 行,而当用户单击上一个时则相反。

表名:事件

我的试验是

select * from events where entred_by = '$id' limit $limit, 50

但问题是我无法计算下一行和上一行。

编辑

        $start = '0';
        $PAGE_P = $_GET['p'];
        $PAGE_N = $_GET['n'];
        if(!numeric($PAGE_N)){ 
            $PAGE_N = 50;
            $PAGE_P = 0;
            $start = '0';
        }else{
            if(isset($_GET['n'])){
                $PAGE_N = $PAGE_N + 50;
                $PAGE_P = $PAGE_N - 50;
                $start = $PAGE_N;
            }else{
                $PAGE_N = $PAGE_P + 50;
                $PAGE_P = $PAGE_N - 50; 
                $start = $PAGE_P;               
            }
        }
        $this->query = SQL::get("
            SELECT * FROM event 
            INNER JOIN user
            ON user.user_id = event.entered_by
            ORDER BY event_id ASC LIMIT $start,50
        ");

我进行了编辑,通过编辑我可以使用下一个按钮,该按钮有效,但是当我按上一个按钮时,它会返回到第 1 行。

【问题讨论】:

  • 假设一个自然的排序顺序,你只需每次调整你的限制。限制 50,50(前锋)-> 限制 100,50(前锋),限制 150,50(前锋)-> 限制 100,50(后退)
  • 这叫分页..有数百篇文章。

标签: php sql


【解决方案1】:
SELECT * FROM events WHERE entred_by = '$id' ORDER BY id LIMIT $start, $limit

设置 $start 值(开始的行号)和 $limit (50)。

您需要使用 LIMIT 关键字,可能还需要使用 ORDER BY。

修改更新:

好的,忽略验证,应该是这样的:

$this->query = SQL::get("
            SELECT * FROM event 
            INNER JOIN user
            ON user.user_id = event.entered_by
            ORDER BY event_id ASC 
            LIMIT $start_row, $number_of_rows
        ");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多