我创建了一个自定义表,在WordPress中存储'帖子喜欢'。
$sql[] = "CREATE TABLE IF NOT EXISTS {$table_prefix}like (
id bigint(20) NOT NULL AUTO_INCREMENT PRIMARY KEY,
post_id bigint(20) NOT NULL,
user_id bigint(20) NOT NULL,
KEY recommenders (post_id, user_id)
) {$charset_collate};";
当用户点击WordPress帖子上的"喜欢"按钮时,会向表中添加一行,该行捕获用户ID和帖子ID。
获取所有"喜欢"某个帖子的用户id数组,我可以这样做:
$result = $wpdb->get_col( $wpdb->prepare( "SELECT user_id FROM {$table_prefix}like WHERE post_id = %d", $post_id ) );
我现在想做两件事:
如何修改我的查询,以便最近添加到表中的行在
$result
数组中首先返回?我怎么能做完全相同的问题1,但只返回5行?
For 1:您可以通过在查询中添加ORDER BY `id` DESC
来按id
降序排列它们
对于2:添加LIMIT 0, 5
:
$result = $wpdb->get_col( $wpdb->prepare( "SELECT `user_id` FROM `{$table_prefix}like` WHERE `post_id` = %d ORDER BY `id` DESC LIMIT 0, 5", $post_id ) );
- 为了确保
ORDER BY
作为cckeep暗示,我会添加一个LikeDate列到你的表作为日期时间(时间戳),然后在LikeDate列上使用ORDER BY
。这可以确保你统计回访者,他们可能真的喜欢你的帖子。 - 查看FOUND_ROWS函数,如果您想知道在没有限制的情况下返回的总数