mySQL上一个/下一个查询

时间:2013-03-03 22:11:45

标签: php mysql

我正在尝试找到一种方法来使用上一个下一个按钮来显示给定查询的更多数据 - 分页就像分页一样。

查询是这样的:

$query = "SELECT * 
        FROM wp_posts p
            LEFT OUTER JOIN wp_term_relationships r ON r.object_id = p.ID
            LEFT OUTER JOIN wp_term_taxonomy x ON x.term_taxonomy_id = r.term_taxonomy_id
            LEFT OUTER JOIN wp_terms t ON t.term_id = x.term_id
            LEFT JOIN wp_postmeta pm ON p.id = pm.post_id
        WHERE p.post_status = 'publish'
        AND pm.meta_key = 'xTraData'
        AND p.post_type = 'post'
        AND t.slug = 'press-coverage'
        ORDER BY p.post_date DESC LIMIT 0,6;";

如何将以前的ID 下一个ID 用于下一个/上一个按钮以刷新查询字符串?

2 个答案:

答案 0 :(得分:1)

你可以使用$ _GET变量来获取它们,这些变量可以从URL发送。处理它们以提高你的限制。

mysql限制定义了要获取的行数和从中获取的行数。

因此,您的查询中的0, 6说从0(第一个)开始并选择6行。

$p_num = isset($_GET['pagenumber']) && (int)$_GET['pagenumber'] > 0 ? $_GET['pagenumber'] : 0;
$p_size = 6;

$query = "SELECT * 
        FROM wp_posts p
            LEFT OUTER JOIN wp_term_relationships r ON r.object_id = p.ID
            LEFT OUTER JOIN wp_term_taxonomy x ON x.term_taxonomy_id = r.term_taxonomy_id
            LEFT OUTER JOIN wp_terms t ON t.term_id = x.term_id
            LEFT JOIN wp_postmeta pm ON p.id = pm.post_id
        WHERE p.post_status = 'publish'
        AND pm.meta_key = 'xTraData'
        AND p.post_type = 'post'
        AND t.slug = 'press-coverage'
        ORDER BY p.post_date DESC LIMIT ".(($p_num-1) * $p_size).",".$p_size.";";

现在,发送一个请求,例如:yourpage.php?pagenumber=2,它将查询第二页,其中一个页面将包含大约6个项目。

答案 1 :(得分:0)

您可以传入LIMIT边界的变量。在这种情况下,以前的ID 将为null下一个ID 可能为7.如果您一直想要 X 记录,可以LIMIT $next_ID, ($next_ID + $X)并相应地修改您的上一个和下一个变量。