0

我有一个 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找到我正在阅读的当前帖子有多少匹配项。

例如,如果我正在阅读 ID 10 的帖子,我希望能够看到有 2 个人将其保存为收藏夹。

我试过了$data = $wpdb->get_var("SELECT post_id FROM $table_name");var_dump($data);但这只会返回最喜欢的帖子,而不是所有最喜欢的帖子。

4

1 回答 1

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 在此示例中是您的帖子的编号。

即使这样写我也觉得很脏,但在对你的问题最严格的解释中,这个查询应该能满足你的要求。

于 2013-04-18T01:08:32.283 回答