使用 PHP 和 MySQL,我正在将一个站点与基于 MediaWiki 的 wiki 集成,以便站点中用户的个人资料有一些关于他们在 wiki 中的贡献的统计信息。
我想在命名空间中显示用户的最后 3 篇已编辑文章(主要文章,id 0),不重复,以及指向它们的链接。
为了做到这一点,我或多或少地做了以下事情:
// getting the article IDs
$db->query("SELECT DISTINCT rev_page
FROM revision r, page p
WHERE r.rev_page = p.page_id
AND p.page_namespace = 0
AND rev_user = {$userId}
ORDER BY r.rev_timestamp DESC
LIMIT 3");
// then the IDs are stored in $last_edited_ids...
// getting the names of the articles
$db->query("SELECT page_title
FROM page WHERE page_id
IN (" . implode($last_edited_ids, ',') . ")");
问题是我不确定它是否正确,尽管它在大多数情况下都有效:对于某些用户,旧文章显示为最后编辑,但第二和第三个结果是正确的。这让我觉得我一定做错了什么,但 SQL 不是我的强项......
提示:如果您不知道 MediaWiki 数据库方案(它相当自动解释),您可以在这里查看。