【问题标题】:how to store a xml file into mysqldatabase and retrieve it?如何将 xml 文件存储到 mysqldatabase 并检索它?
【发布时间】:2009-07-14 18:03:43
【问题描述】:

我已经从下面的代码自动生成了一个 XML 文件。

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 文件?

【问题讨论】:

    标签: php html xml


    【解决方案1】:

    使用DOMDocument::saveXML() 获取您的xml 文件的字符串表示形式,并将此字符串插入数据库中的适当列中。根据数据的大小,使用TINYBLOB(2^8 字节)、BLOB(2^16 字节)、MEDIUMBLOB(2^24 字节)或LONGBLOB(2^32 字节)类型的列)(如果在您选择的 RDBMS 中使用 MySQL 或适当的数据类型)。

    【讨论】:

    • 我正在尝试这样做。 我必须为此给 ****** 什么?
    • ******* 应该是“.mysql_escape_string($xmlString).”
    • $xmlString = $dom->saveXML();而不是 DOMDocument::saveXML();您必须将 saveXML() 方法的输出分配给某个变量。您还必须调用 $dom 对象上的方法。
    • 请让自己熟悉 PHP 的核心概念...这将使理解 SO 上的答案更加容易。
    • 是的,我改变了.....但是它没有连接到数据库连接到数据库代码有什么问题
    【解决方案2】:

    改用DOMDocument-&gt;saveXML method 将XML 文档作为字符串获取。

    【讨论】:

      【解决方案3】:
      <?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.
      

      【讨论】:

      • INSERT INTO xml (File) VALUES 将不起作用,它将被您替换为整个 xml 作为字符串,您将不得不在这里使用 id 或类似的东西,如果您无法使用 flash 访问数据库,这将毫无价值(我猜您不会想改变你的 Flash 插件)。但如前所述,即使你得到这个工作,它也会和之前的 xml 事情一样(同样的错误),但你必须做很多事情才能到达那里。跨度>
      • 你说的正是仪式。不明白哪一个最适合尝试?弗洛你能帮我吗..如果我在窃听就离开它
      • 坚持使用 xml 解决方案,忘记 sql 的东西,那将是大量的工作,根本没有任何区别。添加:var_dump($_POST["song"]);某处,以便您可以看到发布到 php 文件的内容。然后尝试一下,将输出与 flashplayer 中播放的内容进行比较
      • 如果我放置 var_dump ,当我打开 player.php 时,它会在屏幕上显示所选歌曲作为文本
      • 这是应该做的,flashplayer里的歌曲是一样的吗?一切正常吗?当 flashplayer 播放错误的歌曲时显示的文本是什么?
      【解决方案4】:

      我认为将它存储在数据库中是没有意义的,如果你使用另一个问题的解决方案,即单文件问题已解决(再次!!),如果你将它存储在数据库中并从那里获取它或者任何这可能也有效,甚至可能是更好的解决方案,但这不会解决你的错误值的问题,因为这个 php 脚本将获得与另一个完全相同的值,它会导致完全相同的事情。

      再次:

      检查将数据发布到 PHP 脚本的代码!

      【讨论】:

      • 对不起,如果我问了这么多次,但我在这里尝试......在你使用 microtime() 函数给出解决方案之前......实际上那很棒,但我不知道为什么,它正在创建 xml 文件每次但它不访问该文件。它只显示我们将首先选择的播放列表。
      • 看看他的其他问题。有多种情况可能出错: post 脚本再次发送相同的数据 -> 你得到相同的东西 Flash 没有加载正确的 xml -> 你得到相同的东西缓存问题。也许还有其他事情,但没有一个与此有关。如果另一个脚本做错了,以另一种方式将相同的数据传递到闪存不会使它变得更好。在这里进行调试或显示其他文件,没有人可以帮助您。
      • 随着人们不断反对这个答案,我认为他们必须比我更了解.. 问他们
      • 其实正处于学习阶段,所以要问这么多次
      • 没关系,但如果你忽略我在其他帖子中已经说过的话,并且我因为指出重要的东西而被否决,我真的不想继续下去
      猜你喜欢
      • 1970-01-01
      • 2012-05-05
      • 1970-01-01
      • 1970-01-01
      • 2015-04-15
      • 2017-07-04
      • 1970-01-01
      • 2011-10-15
      • 1970-01-01
      相关资源
      最近更新 更多