将XML数据存储到MySQL

时间:2012-02-07 11:41:43

标签: php mysql xml

我有一个XML文件。我想将XML文件中的所有数据保存到数据库

XML的文件结构就像

<STORY>
<BYLINE>abc</BYLINE>
<STORYID>123456</STORYID>
</STORY>

将数据存储到我正在使用的数据库的代码是

$dom = new DOMDOcument();
    $dom->loadXML(equitymarketnews/$zname);
    $xpath = new DOMXpath($dom);
    $res = $xpath->query("//STORY/");
$allres = array();
foreach($res as $node){
        $result = array();
$byline = mysql_real_escape_string($node->getElementsByTagName("BYLINE")->item(0)->nodeValue);
$storyid = mysql_real_escape_string($node->getElementsByTagName("STORYID")->item(0)->nodeValue);

}
$sql12="insert into equitymarketnews values('$byline','$storyid')"; 
                        mysql_query($sql12);

我的数据库中什么都没有。所有值都是空白。 我哪里错了? 我认为这条线有问题

$res = $xpath->query("//STORY/");

我想在数据库中记录数据,即ABC和12345 FROm XML File To Table

2 个答案:

答案 0 :(得分:1)

我真的不知道您的问题是什么,但假设您发布的代码不能像您一样工作,我注意到的一件事是插入记录:

$sql12="insert into equitymarketnews values('$byline','$storyid','$pubdate','$author','$cat','$subcat','$titleline','$subtitleline,'$storymain','$flag')"; 
mysql_query($sql12);

不应该 你的foreach循环吗?否则你不会在数据库中得到任何东西。

在我看来,它看起来应该是这样的:

foreach($res as $node){
        $result = array();
        $byline = mysql_real_escape_string($node->getElementsByTagName("BYLINE")->item(0)->nodeValue);
        $storyid = mysql_real_escape_string($node->getElementsByTagName("STORYID")->item(0)->nodeValue);
        $sql12="insert into equitymarketnews values('$byline','$storyid')"; 
        mysql_query($sql12);
}

答案 1 :(得分:0)

您实际上可以直接使用mysql客户端导入XML数据。我没有太多经验为您提供代码示例,但MySQL docs有相当多的文档。

基本上,你可以这样做:

LOAD XML LOCAL INFILE 'address.xml' INTO TABLE quitymarketnews ROWS IDENTIFIED BY '<STORY>';