如何解决您如何计数和格式化用户标签
| 我有用户输入的标签,这些标签位于表格字段标签下。$sql=\"SELECT tags from table\";
$stmt16 = $conn->prepare($sql);
$result=$stmt16->execute();
while($row = $stmt16->fetch(PDO::FETCH_ASSOC)){
echo $tags=$row[\'tags\'];
}
这产生
酷,是,好的酷,是,好的
因为该字段下有2个条目具有相同的3个标签。我希望能够计算每个标签有多少重复,这样结果应该是cool(2)yes(2)ok(2)。有人知道解决此问题的正确方法吗?我应该以数组形式获取结果还是将其爆炸?
解决方法
对于您当前的数据结构,我给出的答案是肯定的:正如您所说的那样,将它们分解并放入数组中。
$tags = array();
while($row = $stmt16->fetch(PDO::FETCH_ASSOC)){
foreach(explode(\',\',$row[\'tags\']) as $tag) {
if(isset($tags[$tag]) {$tags[$tag]++;} else {$tags[$tag]=1;}
}
}
//now you can see how many times each tag occurred...
foreach($tags as $tag=>$count) {
print \"Tag {$tag} occurred {$count} times<br />\";
}
但是,如果您可以更改数据库结构,那么每个数据库记录中只有一个记录,您会发现管理标签变得容易得多。这样可以更轻松地查询它们。
, 我将声明更改为
SELECT COUNT(*) as cnt,tags
FROM table
GROUP BY tags
你在那里。
编辑:
不要忘记将echo
更改为echo $row[\'tags\'] .\"(\". $row[\'count\'] .\")\";
, 只需使用此查询:
SELECT tag,COUNT(*)
FROM table
GROUP BY tag
HAVING COUNT(*) >1;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。