我试图通过使用MySQL中的数据在我的网站上实现谷歌地图,但最终得到这个错误
此页包含以下错误:
第18 列第 1 行出错:解析属性名称时出错
下面是第一个错误之前的页面呈现。
以下是以下代码:https://developers.google.com/maps/documentation/javascript/mysql-to-maps
我可以知道导致错误的原因吗?
<?php
require("connect.php");
function parseToXML($htmlStr)
{
$xmlStr=str_replace('<','<',$htmlStr);
$xmlStr=str_replace('>','>',$xmlStr);
$xmlStr=str_replace('"','"',$xmlStr);
$xmlStr=str_replace("'",''',$xmlStr);
$xmlStr=str_replace("&",'&',$xmlStr);
return $xmlStr;
}
// Opens a connection to a MySQL server
$connection=mysql_connect ('localhost', $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 'id="' . $ind . '" ';
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>';
?>
看起来这个例子是错误的。
echo 'id="' . $ind . '" ';
应该是
echo 'id="' . $row['id'] . '" ';
(如果失败,请尝试从mysql_fetch_assoc
调用中删除错误抑制,以查看数据库是否抛出错误,即删除@
(
无论哪种情况,正在发生的事情都是这样的。
您正在输出一个 XML 文档,该文档正在呈现 - 但您得到
第18 列第 1 行出错:解析属性名称时出错
因为 XML 在name attribute
处格式不正确 - 这会告诉我,您几乎可以肯定在 XML 输出中存在 php 错误。
例如
<markers>
<marker id="Notice: Undefined variable: "id" in ~whateverkml.php on line blah blah blah
" name="foo" address="bar" ... />}
您可以通过 curl 或类似方式调用文件,或者在大多数浏览器中通过"查看源代码"来确认这一点。
最后,如果不是这种情况,请尝试在文件顶部打开错误报告,紧跟在开始的 php 标签之后,例如。
<?php
ini_set('display_errors', 1);
error_reporting(~0);
然后再次检查脚本的实际输出。