作者:常山他爹没有JJ2000_836 | 来源:互联网 | 2023-05-22 03:44
我在输出所请求的歌曲标题,艺术家,专辑的列表以及请求者的姓名和他的XML消息时遇到问题.我尝试了这个,但它给了我一个空白页面:$linkmysql_connect(localho
我在输出所请求的歌曲标题,艺术家,专辑的列表以及请求者的姓名和他的XML消息时遇到问题.
我尝试了这个,但它给了我一个空白页面:
$link = mysql_connect("localhost","dbuser","dbpass");
mysql_select_db("dbname");
$query = "SELECT requestlist.host, requestlist.msg, requestlist.name, songlist.ID, songlist.count_requested, songlist.artist, songlist.title,
songlist.album, songlist.buycd, songlist.date_played, count(*) as cnt FROM requestlist, songlist
WHERE (requestlist.sOngID= songlist.ID) AND (requestlist.code<700) GROUP BY requestlist.msg, songlist.ID, songlist.count_requested,
songlist.artist, songlist.title, songlist.album, songlist.buycd, songlist.date_played ORDER BY requestlist.msg DESC, songlist.date_played DESC" ;
$results = mysql_query($query);
echo "\n";
while($line = mysql_fetch_assoc($results)) {
echo " \n";
echo "" . $line["artist"] . "\n";
echo "" . $line["title"] . "\n";
echo "". $line["album"] ."\n";
echo "". $line["name"] ."\n";
echo "" . $line["msg"] . "\n";
echo "\n";
}
echo "\n";
mysql_close($link);
解决方法:
我宁愿使用simplexml,xmlwriteror DOM来构建XML,以及PDO用于数据库处理:
$stmt = $db->prepare($query); // define $db as PDO in include-file
$stmt->execute();
$requests = $stmt->fetchAll(PDO::FETCH_ASSOC);
$xml = new SimpleXMLElement("");
foreach ($requests as $r) {
$cd = $xml->addChild("CD");
$cd->addchild("singer", $r['artist']);
$cd->addChild("song", $r['title']);
$cd->addChild("album", $r['album']);
$cd->addChild("name", $r['name']);
$cd->addChild("shout", $r['msg']);
}
echo $xml->asXML();
还有一个带有映射数组的小变体:
$fields = array(
'singer' => 'artist',
'song' => 'title',
# ...
);
foreach ($requests as $r) {
$cd = $xml->addChild("CD");
foreach ($fields as $name => $column)
{
$cd->$name = $r[$column];
}
}