为什么我没有从这个php文件获取XML输出?

时间:2011-04-22 23:12:12

标签: php mysql xml database

我应该从以下访问数据库信息的php文件中获取XML输出。

这是php文件:

 <?php
 require("phpsqlajax_dbinfo.php");

 function parseToXML($htmlStr) 
 { 
 $xmlStr=str_replace('<','&lt;',$htmlStr); 
 $xmlStr=str_replace('>','&gt;',$xmlStr); 
 $xmlStr=str_replace('"','&quot;',$xmlStr); 
 $xmlStr=str_replace("'",'&#39;',$xmlStr); 
 $xmlStr=str_replace("&",'&amp;',$xmlStr); 
 return $xmlStr; 
 } 

 // Opens a connection to a MySQL server
 $connection=mysql_connect ($server, $username, $password);
 if (!$connection) {
   die('Not connected : ' . mysql_error());
 }

 // Set the active MySQL database
 $db_selected = mysql_select_db($database, $connection);
 if (!$db_selected) {
   die ('Can\'t use db : ' . mysql_error());
 }

 // Select all the rows in the markers table
 $query = "SELECT * FROM markers WHERE 1";
 $result = mysql_query($query);
 if (!$result) {
   die('Invalid query: ' . mysql_error());
 }

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

 // Start XML file, echo parent node
 echo '<markers>';

 // Iterate through the rows, printing XML nodes for each
 while ($row = @mysql_fetch_assoc($result)){
   // ADD TO XML DOCUMENT NODE
   echo '<marker ';
   echo 'name="' . parseToXML($row['name']) . '" ';
   echo 'address="' . parseToXML($row['address']) . '" ';
   echo 'lat="' . $row['lat'] . '" ';
   echo 'lng="' . $row['lng'] . '" ';
   echo 'type="' . $row['type'] . '" ';
   echo '/>';
 }

 // End XML file
 echo '</markers>';

 ?>

这是我应该获得的XML链接:

http://code.google.com/apis/earth/articles/phpsqlearth.html

以下是我未获得输出的网站链接:

http://thehobbit2movie.com/phpsqlajax_genxml.php

2 个答案:

答案 0 :(得分:1)

我认为它返回正常,除非您在空白页面上选择“查看来源”,否则它可能在浏览器中不可见。

尝试在header()调用之后修改代码,如下所示:

// Start XML file, echo parent node
echo '<?xml version="1.0" encoding="UTF-8"?>' . PHP_EOL;
echo '<markers>';

答案 1 :(得分:0)

嗯,几句改进你的代码的评论

1- parseToXML可以被原生的htmlspecialchars函数替换。

http://php.net/manual/en/function.htmlspecialchars.php

2- SELECT * FROM markers WHERE 1

不需要WHERE 1,你只需要SELECT * FROM标记。不过滤时不需要WHERE

好的,回答你的问题,尝试从mysql_fetch_assoc中删除@ in。您可能会看到出现错误。这可能是阻止脚本正确执行的原因。

希望有帮助