我遇到了将一些MYSQL数据转换为XML输出的问题。我做了一些研究,我不想在回声之前调用标题。下面的代码来自我的example_xml.php文件以下是确切的错误。非常感谢任何帮助。
Warning: Cannot modify header information - headers already sent by (output started at /home/content/59/11513559/html/bg/example_xml.php:2) in /home/content/59/11513559/html/bg/example_xml.php on line 65
第65行是
header ("Content-Type:text/xml");
<?php
//database configuration
$config['mysql_host'] = "localhost";
$config['mysql_user'] = "placeholder";
$config['mysql_pass'] = "placeholder";
$config['db_name'] = "placeholder";
$config['table_name'] = "placeholder";
//connect to host
mysql_connect($config['mysql_host'],$config['mysql_user'],$config['mysql_pass']);
//select database
@mysql_select_db($config['db_name']) or die( "Unable to select database");
// start creating xml document
$xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
$root_element = $config['table_name']."s"; //fruits
$xml .= "<$root_element>";
//select all items in table
$sql = "SELECT * FROM ".$config['table_name'];
$result = mysql_query($sql);
if (!$result) {
die('Invalid query: ' . mysql_error());
}
if(mysql_num_rows($result)>0)
{
while($result_array = mysql_fetch_assoc($result))
{
$xml .= "<".$config['table_name'].">";
//loop through each key,value pair in row
foreach($result_array as $key => $value)
{
//$key holds the table column name
$xml .= "<$key>";
//embed the SQL data in a CDATA element to avoid XML entity issues
$xml .= "<![CDATA[$value]]>";
//and close the element
$xml .= "</$key>";
}
$xml.="</".$config['table_name'].">";
}
}
//close the root element
$xml .= "</$root_element>";
//send the xml header to the browser
header ("Content-Type:text/xml");
//output the XML data
echo $xml;
?>
答案 0 :(得分:0)
即使是单个空格也可能导致此错误。删除不必要的空格,但您可以将此(更正的)标题放在脚本的顶部
header("Content-Type: text/xml");
因为这个标题信息不在任何条件语句中 - 它总是被发送。
或者,使用输出缓冲;将以下内容添加为第一行:
ob_start();
最后,
ob_flush();
有关输出缓冲的信息,请参阅the docs。