#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
Вот ссылка на сайт, с которого я не получаю выходные данные:
Комментарии:
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, кажется, все в порядке?