如何设置MySQL查询以接收Backbone分页请求?

时间:2013-06-27 22:02:33

标签: mysql api backbone.js slim

我使用Slim PHP设置了我的API。这是获取所有事件的基本GET请求。我想使用Backbone Paginator对此进行分页。我的主要问题是......如何修改我的SELECT语句以接受Backbone中分页集合中的参数?似乎没有任何内容详细说明如何设置API以从分页器接收这些请求。 This post是我能来的最接近的,但没有说明你实际从数据库中请求的内容。它只是一个基本的“如果这个参数存在,把它添加到MySQL语句?”似乎应该有更好的方法。

$app->get('/events', 'getEvents');


function getEvents() {
    // what do I do with the $sort variable?
    $sort = $app->request()->params('sort');
    $sql = "SELECT * FROM events";

    try {
        $db = getConnection();
        $stmt = $db->query($sql);  
        $events = $stmt->fetchAll(PDO::FETCH_OBJ);
        $db = null;
        echo json_encode($events);
    } catch(PDOException $e) {
        echo '{"error":{"text":'. $e->getMessage() .'}}'; 
    }
}

1 个答案:

答案 0 :(得分:1)

我不是PHP开发人员,但您确实需要在查询中实现分页。

有关此信息,请参阅MySQL Data - Best way to implement paging?

对于您关联的帖子,您可以按照提交者的方法来定义查询,其中包括限制:

// where $results is the number of results to return
$sql = "select * FROM events ORDER BY " . $sort . " LIMIT " . $page . " , $results";

对于存在/不存在的参数,您始终可以设置默认值。因此,如果没有请求页面,请提供第一个页面,如果没有请求排序,请按照对您的应用程序有意义的顺序进行排序。如果存在额外参数,您可以丢弃它们。

如果您需要非常严格的API,如果请求与端点规范不匹配,您始终可以返回错误