Почему я не получаю XML-вывод из этого php-файла?

#php #mysql #xml #database

#php #mysql #xml #База данных

Вопрос:

Предполагается, что я получаю XML-вывод из следующего php-файла, который обращается к информации из базы данных.

Вот php-файл:

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

 function parseToXML($htmlStr) 
 { 
 $xmlStr=str_replace('<','amp;<',$htmlStr); 
 $xmlStr=str_replace('>','amp;>',$xmlStr); 
 $xmlStr=str_replace('"','amp;quot;',$xmlStr); 
 $xmlStr=str_replace("'",'amp;#39;',$xmlStr); 
 $xmlStr=str_replace("amp;",'amp;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

Комментарии:

1. Я могу правильно видеть xml на вашем сайте. в чем проблема?

Ответ №1:

Я думаю, что он возвращается нормально, он просто может быть не виден в вашем браузере, если вы не выберете «просмотреть исходный код» на пустой странице просмотра.

Попробуйте изменить код сразу после header() вызова, чтобы он выглядел как:

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

Ответ №2:

Хм, пара комментариев для улучшения вашего кода

1- parseToXML может быть заменен встроенной функцией htmlspecialchars.

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

2- ВЫБЕРИТЕ * ИЗ маркеров, ГДЕ 1

Нет необходимости в WHERE 1, вам просто нужно ВЫБРАТЬ * ИЗ маркеров. ГДЕ не требуется, когда вы не фильтруете

Хорошо, чтобы ответить на ваш вопрос, попробуйте удалить @ in из mysql_fetch_assoc. Вы можете увидеть появление ошибки. Вероятно, именно это мешает правильному выполнению вашего скрипта.

Надеюсь, что это поможет

Комментарии:

1. На самом деле, я вижу ваш XML, кажется, все в порядке?