dongshan7060 2013-08-25 00:11
浏览 57
已采纳

尝试从MYSQL获取数据到XML时出错[重复]

This question already has an answer here:

I am having a issue with getting some MYSQL data to a XML output. I have done some research and i am not trying to invoke the header before a echo. The below code is from my example_xml.php file Below is the exact error as well. Any help is much appreciated.

  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

line 65 is

          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;
 ?>
</div>
  • 写回答

1条回答 默认 最新

  • dswm97353 2013-08-25 00:32
    关注

    Even a single space can cause this error. Remove unnecessary white-space, but you can place this (corrected) header at the top of your script

    header("Content-Type: text/xml");
    

    as this header information is not within any conditional statement - it is always sent.

    Alternatively, use output buffering; add the following as the very first line:

    ob_start();
    

    and at the end,

    ob_flush();
    

    See the docs on output buffering.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 R语言卸载之后无法重装,显示电脑存在下载某些较大二进制文件行为,怎么办
  • ¥15 java 的protected权限 ,问题在注释里
  • ¥15 这个是哪里有问题啊?
  • ¥15 关于#vue.js#的问题:修改用户信息功能图片无法回显,数据库中只存了一张图片(相关搜索:字符串)
  • ¥15 texstudio的问题,