如何将MySQL数据转换为XML字符串(PHP)?

如何将MySQL数据转换为XML字符串(PHP)?,php,mysql,xml,Php,Mysql,Xml,在我的一个网站上,我将所有访问者及其国家代码记录在MySQL表中 为了简单起见,让我们假设这个表的列是“IP”和“Country”。所以我有一张来自几个不同国家的游客的大桌子 出于显示目的,我需要将此数据转换为XML格式字符串,如下所示: <set label='US' value='17'/> <set label='FR' value='12'/> <set label='GB' value='18'/> <set label='AU' value=

在我的一个网站上,我将所有访问者及其国家代码记录在MySQL表中

为了简单起见,让我们假设这个表的列是“IP”和“Country”。所以我有一张来自几个不同国家的游客的大桌子

出于显示目的,我需要将此数据转换为XML格式字符串,如下所示:

<set label='US' value='17'/>
<set label='FR' value='12'/>
<set label='GB' value='18'/>
<set label='AU' value='8' />
$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]);
}

其中,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)."'/>";
$query=mysql\u query(“从国家/地区为我们的访问者中选择*”);
$string.=“”;
$query=mysql_query(“从国家/地区='FR''的访问者中选择*);
$string.=“”;
$query=mysql_query(“从访问国家/地区的访客中选择*”);
$string.=“”;
问题是,我很快意识到,我的访客来自数百个不同的国家,这真是一团糟!此外,我可能会想念将来有人来自的国家

难道没有更简单的方法吗?也许是用一个特殊的数组和foreach之类的

谢谢你的帮助

尝试此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]}'/>";
}
$sql=mysql\u查询(“按国家从访客组中选择国家,计数(国家)”;
while($row=mysql\u fetch\u数组($sql))
{
回声“;
}
$string=array();
$query=mysql_query(“按国家从访问者组中选择国家,将(*)计数为num”);
while(true){
$row=mysql\u fetch\u数组($query);
如果(!$行)中断;
$string[]=sprintf(“”,$row['country',$row['num']);
}
$string=内爆(“\n”,$string);
类似这样的内容:

<set label='US' value='17'/>
<set label='FR' value='12'/>
<set label='GB' value='18'/>
<set label='AU' value='8' />
$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]);
}
$query=mysql\u query(“按国家/地区从访客组中选择国家/地区,将(id)计数为usercount;”);
$fmt=“\n”;
$rows=mysql\u fetch\u数组($query);
foreach($行作为$行){
$string.=sprintf($fmt,$row[0],$row[1]);
}

好的,谢谢……这会给我什么样的输出?我应该将查询转换为数组吗?谢谢!正是我想要的:)