如何将xml文件存储到mysqldatabase中并检索它?
问题描述:
我已经从下面的代码中自动生成了一个XML文件。如何将xml文件存储到mysqldatabase中并检索它?
if (isset($_POST["song"])&& $_POST['song'] != "") {
$song = $_POST["song"];
} else {
$song = array();
}
$dom = new DOMDocument("1.0");
// display document in browser as plain text
// for readability purposes
// create root element
$root = $dom->createElement("playlist");
$dom->appendChild($root);
$root->setAttribute('version', "1");
$root->setAttribute('xmlns', "http://xspf.org/ns/0/");
$rootnext = $dom->createElement("trackList");
$root->appendChild($rootnext);
foreach ($song as $counter) {
$tokens = ",";
$tokenized = strtok($counter, $tokens);
// create child element
$song = $dom->createElement("track");
$rootnext->appendChild($song);
$song1 = $dom->createElement("creator");
$song->appendChild($song1);
$text = $dom->createTextNode("www.musicking.in");
$song1->appendChild($text);
$song1 = $dom->createElement("title");
$song->appendChild($song1);
// create text node
$text = $dom->createTextNode($tokenized);
$song1->appendChild($text);
$tokenized = strtok($tokens);
$song1 = $dom->createElement("location");
$song->appendChild($song1);
$text = $dom->createTextNode($tokenized);
$song1->appendChild($text);
}
$dom->save("playlist.xml");
实际生成XML文件后,它存储在根目录中。
你能告诉我如何将生成的XML文件存储到MySQL数据库中吗?
生成XML文件后,我必须调用该文件。我使用下面的代码来调用:
<object data="musicplayer.swf?autostart=true&playlist=playlist.xml" type="application/x-shockwave-flash" width="400" height="300">
<param name="movie" value="musicplayer.swf?autostart=true&playlist=playlist.xml"/>
</object>
请告诉我如何存储和检索MySQL数据库这个playlist.xml文件?
答
使用DOMDocument::saveXML()
获取xml文件的字符串表示形式,并将此字符串插入到数据库的approrpiate列中。根据您的数据大小,使用TINYBLOB
(2^8字节),BLOB
(2^16字节),MEDIUMBLOB
(2^24字节)或LONGBLOB
(2^32字节)类型的列(如果使用MySQL或适当的数据类型在您选择的RDBMS中)。
答
我认为把它存储在数据库中是没有意义的,如果你使用来自另一个问题的解决方案,即单个文件问题已解决(再次!!),如果将它存储在数据库中并从中获取那里或任何这可能也工作,甚至更好的解决方案,但这不会解决您的问题与错误的值,因为这个PHP脚本将获得完全相同的值作为另一个,它将导致完全相同的事情。
还是那句话:
检查代码您发布PHP脚本中的数据!
答
<?php
if(isset($_POST["song"])&& $_POST['song'] != "")
{
$song = $_POST["song"];
}
else {$song=array();}
$dom = new DOMDocument("1.0");
// display document in browser as plain text
// for readability purposes
// create root element
$root = $dom->createElement("playlist");
$dom->appendChild($root);
$root->setAttribute('version', "1");
$root->setAttribute('xmlns', "http://xspf.org/ns/0/");
$rootnext = $dom->createElement("trackList");
$root->appendChild($rootnext);
foreach ($song as $counter) {
$tokens = ",";
$tokenized = strtok($counter, $tokens);
// create child element
$song = $dom->createElement("track");
$rootnext->appendChild($song);
$song1 = $dom->createElement("creator");
$song->appendChild($song1);
$text = $dom->createTextNode("www.musicking.in");
$song1->appendChild($text);
$song1 = $dom->createElement("title");
$song->appendChild($song1);
// create text node
$text = $dom->createTextNode($tokenized);
$song1->appendChild($text);
$tokenized = strtok($tokens);
$song1 = $dom->createElement("location");
$song->appendChild($song1);
$text = $dom->createTextNode($tokenized);
$song1->appendChild($text);
}
DOMDocument::saveXML();
$con = mysql_connect("localhost","music123_sri","password");
if (!$con)
{ die('Could not connect: ' . mysql_error()); }
mysql_select_db("music123_telugu", $con);
$sql="INSERT INTO xml (File) VALUES (" . mysql_escape_string($xmlString) . ")";
$data = mysql_query("SELECT File FROM xml")
$info = mysql_fetch_array($data);
?>
<object data="musicplayer.swf?autostart=true&playlist=<?php $info ?>" type="application/x-shockwave-flash" width="400" height="300"><param name="movie" value="musicplayer.swf?autostart=true&playlist=<?php $info ?>"/></object>
can u check the above code its not working.
-1什么是所有的大喊大叫? – 2009-07-14 08:44:53
对不起,如果我问这么多次 但我在这里尝试... befor你给了使用microtime()函数的解决方案.....其实很高的 但我不知道为什么,它创建xml文件每次,但其不访问该文件。它只显示我们将首先选择的播放列表。 – musicking123 2009-07-14 08:47:22
看看他的其他问题。 有很多事情可能会出错: 后脚本再次发送相同的数据 - >你得到相同的东西 Flash不加载正确的XML - >你得到相同的东西 缓存问题。 也许其他的事情,但没有一个必须对此做任何事情。如果另一个脚本做错了,以另一种方式将相同的数据传递给闪存不会使它更好。在这里进行调试或者显示其他文件,这个人可以帮助你。 – Flo 2009-07-14 08:55:02