如何使用 php 计算数据库中标签(关键字)的数量
How to count number of tags(keywords) in database using php
我喜欢这个网站显示标签数量的方式 javascript× 988307 。我想在我的网站上做同样的事情。请建议我使用 php 和 mysql 执行此操作的最佳方法。一种方法是简单地计算关键字,我想这将是一个繁重的过程。
谢谢
数据库应该有一个单独的外键table,它只包含关键字。
QuestionTable(ID, title, body, ...)
FlagTable(ID, name)
QuestionFlagTable(ID, IDquestion, IDflag)
$sql = "SELECT COUNT(*), f.ID, f.name" .
" FROM QuestionFlagTable qf" .
" INNER JOIN FlagTable f ON (f.ID = qf.IDflag)" .
// optional WHERE (e.g. only specific flags)
" GROUP BY f.ID, f.name" .
// optional HAVING (e.g. min. count)
// optional ORDER BY (e.g. by name or count)
"";
当然,您可以在问题正文中搜索关键字,但这是一个 非常 数据库繁重的过程。想想这样的事情:
$sql = "SELECT COUNT(*) FROM QuestionTable WHERE body LIKE ?";
$sth = $pdo->prepare($sql);
$sth->execute(array('%' . $keyword . '%'));
我喜欢这个网站显示标签数量的方式 javascript× 988307 。我想在我的网站上做同样的事情。请建议我使用 php 和 mysql 执行此操作的最佳方法。一种方法是简单地计算关键字,我想这将是一个繁重的过程。 谢谢
数据库应该有一个单独的外键table,它只包含关键字。
QuestionTable(ID, title, body, ...)
FlagTable(ID, name)
QuestionFlagTable(ID, IDquestion, IDflag)
$sql = "SELECT COUNT(*), f.ID, f.name" .
" FROM QuestionFlagTable qf" .
" INNER JOIN FlagTable f ON (f.ID = qf.IDflag)" .
// optional WHERE (e.g. only specific flags)
" GROUP BY f.ID, f.name" .
// optional HAVING (e.g. min. count)
// optional ORDER BY (e.g. by name or count)
"";
当然,您可以在问题正文中搜索关键字,但这是一个 非常 数据库繁重的过程。想想这样的事情:
$sql = "SELECT COUNT(*) FROM QuestionTable WHERE body LIKE ?";
$sth = $pdo->prepare($sql);
$sth->execute(array('%' . $keyword . '%'));