在我的一个网站上,我将所有访问者及其国家/地区代码记录在MySQL表格中。
为简单起见,我们只说这个表的列是“IP”和“Country”。所以我有来自几个不同国家的大量访客。
出于显示目的,我需要将这些数据放入XML格式字符串中,如下所示:
<set label='US' value='17'/>
<set label='FR' value='12'/>
<set label='GB' value='18'/>
<set label='AU' value='8' />
value =''来自该国家的访问者数量。我希望字符串包含表格中的所有国家/地区。
我认为我可以这样做的一种方法是计算具有特定国家/地区的所有行,例如:
$query = mysql_query("SELECT * FROM visitors WHERE country='US'");
$string.="<set label='US' value='".mysql_num_rows($query)."'/>";
$query = mysql_query("SELECT * FROM visitors WHERE country='FR'");
$string.="<set label='FR' value='".mysql_num_rows($query)."'/>";
$query = mysql_query("SELECT * FROM visitors WHERE country='DE'");
$string.="<set label='DE' value='".mysql_num_rows($query)."'/>";
问题,我很快意识到,我的访客来自数百个不同的国家,这真是一团糟!此外,我可能会想念一个有人来自的国家。
有没有更简单的方法来做到这一点?也许有一个特殊的阵列和foreach或什么......
感谢您的帮助!
答案 0 :(得分:1)
这样的事情:
$query = mysql_query("SELECT country, count(id) as usercount FROM visitors group by country;");
$fmt = "<set label='%s' value='%s' />\n";
$rows = mysql_fetch_array($query);
foreach ($rows as $row) {
$string.= sprintf($fmt, $row[0], $row[1]);
}
答案 1 :(得分:0)
尝试此SQL查询:
SELECT country, COUNT(country) FROM visitors GROUP BY country;
完整的PHP部分将是:
$sql = mysql_query( "SELECT country, COUNT(country) FROM visitors GROUP BY country;" );
while( $row = mysql_fetch_array( $sql ) )
{
echo "<set label='{$row[0]}' value='{$row[1]}'/>";
}
答案 2 :(得分:0)
$string=array();
$query = mysql_query("SELECT country, COUNT(*) AS num FROM visitors GROUP BY country");
while (true) {
$row=mysql_fetch_array($query);
if (!$row) break;
$string[]=sprintf('<set label='%s' value='%d'/>',$row['country'],$row['num']);
}
$string=implode("\n",$string);