我有一个Wordpress插件,允许用户保存喜爱的帖子。在我的Wordpress MySQL数据库中,该表如下所示:
id | user_id | post_id
-------+---------+------------
1 | 1 | 3,4,5,6,7,8
2 | 2 | 5,7,8,10
3 | 5 | 3,6,8,10
我希望获取所有post_id
个数字,并将它们组合成一个变量,这样我就可以foreach
找到我正在阅读的当前帖子的匹配数。
例如,如果我正在阅读第10号帖子,我希望能够看到有2个人将其保存为收藏夹。
我已尝试$data = $wpdb->get_var("SELECT post_id FROM $table_name");
和var_dump($data);
,但这只会返回我的最喜欢的帖子,而非所有最喜欢的帖子。
答案 0 :(得分:1)
虽然我在关于规范化的评论中确实扮演了恶魔倡导者,但这种表格布局看起来确实很不错。但是,如果您无法规范化数据库表并且必须使用您所拥有的内容,那么从技术上讲,您可以使用相当hacky的sql语句来执行您所要求的操作:
SELECT count(user_id) as TotalWishes
FROM table_name
WHERE (
(post_id LIKE 'n,%') OR
(post_id LIKE '%,n,%') OR
(post_id LIKE '%,n')
)
此示例中的n是您的帖子的编号。
即使写这些内容我也觉得很脏,但在对你的问题的最严格解释中,这个查询应该做你想要的。