Php 从MySQL表创建xml rss源时出错
当我从localhost上的MySQL数据库制作XML RSS提要时,出现以下错误:Php 从MySQL表创建xml rss源时出错,php,mysql,xml,rss,Php,Mysql,Xml,Rss,当我从localhost上的MySQL数据库制作XML RSS提要时,出现以下错误: 文档末尾的额外内容 这是我的密码: <?php // PDO connect ********* function connect() { return new PDO('mysql:host=localhost;dbname=lookout', 'admin', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO:
文档末尾的额外内容
这是我的密码:
<?php
// PDO connect *********
function connect() {
return new PDO('mysql:host=localhost;dbname=lookout', 'admin', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
}
$pdo = connect();
// posts *******************************
$sql = 'SELECT * FROM `event` ORDER BY serial DESC';
$query = $pdo->prepare($sql);
$query->execute();
$rs_post = $query->fetchAll();
// The XML structure
$data .= '<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">';
$data .= '<channel>';
foreach ($rs_post as $row) {
$data .= '<item>';
$data .= '<time>'.$row['timestamp'].'</time>';
$data .= '<date>'.$row['timestamp'].'</date>';
$data .= '<location>'.$row['longitude'].'</location>';
$data .= '<report>'.$row['details'].'</report>';
$data .= '</item>';
}
$data .= '</channel>';
$data .= '</rss> ';
header('Content-Type: application/xml');
echo $data;
?>
没有根标签丢失,一切似乎都井然有序,但显然不是
根据@fejese的评论,这很可能是由于数据库中的未替换内容造成的。与其手动使用字符串构建文档,为什么不使用像DomDocument这样的已建立的库以安全的方式创建元素呢
下面是一个使用来构建RSS Xml提要的示例,而不是通过字符串连接手动完成此操作。这样,数据库中可能存在的所有转义无效字符序列的繁重工作都由库完成:
$xml = new DOMDocument('1.0', 'utf-8');
$element = $xml->createElement('rss');
$rss = $xml->appendChild($xml->createElement("rss"));
$rss->setAttribute("version","2.0");
$rss->setAttribute("xmlns:atom","http://www.w3.org/2005/Atom");
$channel = $xml->createElement("channel");
foreach ($rs_post as $row) {
$item = $xml->createElement("item");
$item->appendChild($xml->createElement("time", $row['timestamp']));
$item->appendChild($xml->createElement("date", $row['timestamp']));
$item->appendChild($xml->createElement("location", $row['longitude']));
$item->appendChild($xml->createElement("report", $row['details']));
$channel->appendChild($item);
}
$rss->appendChild($channel);
header('Content-Type: application/xml');
echo $xml->saveXML();
是$data上的附加导致了问题 A
$data=”“在首次使用$data
之前,code>删除了错误
查看显示错误的xml文档的源代码时,给出了一个更好、更详细的错误,并指出变量不存在:data
编辑:
Stuart在另一个答案中所说的也可能导致同样的问题,他提出了一个有趣的观点,即使用DOM库以另一种方式创建XML RSS提要。如果您包含生成的示例,可能会有所帮助。难道不是来自数据库的东西弄乱了输出吗?可能是未跳过的
吗?开始调试最简单的方法应该是检查实际输出。嘿,你的答案很有效率,很有帮助,但这不是问题所在。:)