我在php中对行进行计数和排序时遇到问题
我有一个名为tags的表,它将所有给定的标记逐行存储到图像中: 我想得到最流行的标签的数据,所以我试着数一数。我成功地列出并计数了标记,但无法按值对它们进行排序 我尝试过使用ar/sort,创建第三个循环我在php中对行进行计数和排序时遇到问题,php,mysql,pdo,Php,Mysql,Pdo,我有一个名为tags的表,它将所有给定的标记逐行存储到图像中: 我想得到最流行的标签的数据,所以我试着数一数。我成功地列出并计数了标记,但无法按值对它们进行排序 我尝试过使用ar/sort,创建第三个循环 <?php function count_tags_sql($tag) { global $db; // count $sql = $db->query("SELECT tags FROM tags WHERE tags = '$tag'"); $sql-&g
<?php
function count_tags_sql($tag) {
global $db;
// count
$sql = $db->query("SELECT tags FROM tags WHERE tags = '$tag'");
$sql->execute();
echo $tag.'('.$sql->rowcount().')<br>';
}
// get tags
$sql = $db ->prepare("SELECT * FROM tags");
$sql->execute();
$rows = $sql->fetchAll(PDO::FETCH_ASSOC);
foreach($rows as $row){
$tagname[] = $row['tags'];
}
// remove duplicates
$tagname = array_unique($tagname);
// output tags
foreach($tagname as $tag) {
echo count_tags_sql($tag);
}
?>
将count_tags_sql函数和$tagname for loop更改为下面的值
function count_tags_sql($tag) {
global $db;
// count
$sql = $db->query("SELECT tags FROM tags WHERE tags = '$tag'");
$sql->execute();
return $sql->rowcount()
}
// output tags
$tag_arr = [];
foreach($tagname as $tag) {
$tag_arr[$tag] = count_tags_sql($tag);
}
// Sorted array
asort($tag_arr);
您想使用count,最好如下所示:
SELECT tags,count(*) as usages FROM tags GROUP BY 1 ORDER BY 2 DESC;
使用“按标签分组”中的“按标签顺序”选择计数标签;您需要使用prepare和placeholder,而不是query,才能不使用rowcount。使用SQL count代替。您的答案大约有5处错误,除了您没有解释为什么他们应该使用此代码之外。