MySQL计数包括jSon对象

时间:2010-02-24 10:19:25

标签: php jquery mysql ajax json

我为我的网站制作了一个php / ajax / mysql / json脚本,以显示所有标签。

如果我获取页面ID,它将显示该页面的所有标签。 但!在我的主页面中,我想显示所有带有计数器的页面上的所有标签。

例如,如果我用

标记了4个页面
"**ilovestackoverflow**"

我想在我的主页中看到

"**ilovestackoverflow (4)**"

我知道我可以用mysql COUNT()计算行数,但不幸的是我在这种情况下无法使用它,但是我尝试了很多方法:(

(函数sqlnez($ value)是我的stripslashes脚本)

php:

$server = mysql_connect($host, $user, $password);
$connection = mysql_select_db($database, $server);
//if got pageID
if(isset($_GET['id'])) {
  $query = mysql_query("SELECT * FROM tags WHERE id=".sqlnez($_GET['id'])."");
  $json = "({ tags:["; 
  for ($x = 0, $numrows = mysql_num_rows($query); $x < $numrows; $x++) {
    $row = mysql_fetch_assoc($query);
    $json .= "{tag:'" . $row["tag"] . "'}";
      if ($x < mysql_num_rows($query) -1)  
        $json .= ",";  
      else
        $json .= "]})";
    }
}
//this is the part what needs help
//if got nothing
else { 
  $query = mysql_query("SELECT * FROM tags GROUP BY tag");
  $json = "({ tags:["; 
  for ($x = 0, $numrows = mysql_num_rows($query); $x < $numrows; $x++) {
    $row = mysql_fetch_assoc($query);
    $json .= "{tag:'" . $row["tag"] . "',counter:'" . I WANT THE COUNTER HERE . "'}";
    if ($x < mysql_num_rows($query) -1)  
      $json .= ",";  
    else
      $json .= "]})";
  }
}

$response = $_GET["callback"] . $json;
echo utf8_encode($response);
mysql_close($server);

感谢您的帮助和时间:)

2 个答案:

答案 0 :(得分:1)

您的sql请求应为SELECT tag, COUNT (*) as count FROM tags GROUP BY tag,然后将I WANT THE COUNTER HERE替换为$row['count']

答案 1 :(得分:0)

不是手工编写json(这是一个非常糟糕的主意,无论如何),你应该使用json_encode