【问题标题】:Populate MySQL DB from $xml从 $xml 填充 MySQL 数据库
【发布时间】:2012-07-22 00:30:54
【问题描述】:

如何从定义如下的 $xml 填充 MySQL DB?

$xml = simplexml_load_string($line);

是否有任何预定义功能可以自动执行这项工作的某些部分?还是我需要使用 DOM?

【问题讨论】:

标签: php mysql xml populate


【解决方案1】:

据我所知没有预定义的函数,但您可以执行以下操作:

使用查看所有变量

var_dump($xml);

然后像这样循环将它们插入到数据库中:

foreach($xml as $element)
{
    $PDO->prepare('INSERT .....');
    $PDO->bindParam(blah,blah);
    $PDO->execute()
}

【讨论】:

  • 问题在于 var_dump($xml) 返回 object(SimpleXMLElement)#1685 (0) { },而 var_dump($line) 返回数值列表(正如预期的那样)。那么,如何知道参数的名称呢?
  • $line 中的数据是有效的 XML 吗?我不知道为什么它会给你一个错误。您可以像这样 $line['param1'] 等参数的名称
  • var_dump 不适用于 SimpleXML 对象。您的 XML 节点可能没问题,只是 var_dump 没有看到它
  • @GusGus 用
     包围你的 var 转储。 echo '<pre>'; var_dump(xml); echo '</pre>';
【解决方案2】:

如果您尝试将所有文​​件拉到一个表中, 您可以使用 SQL 语句导入它。

LOAD XML LOCAL INFILE 'your_xml_file.xml' 
INTO TABLE your_table_name(field_one,field_two,....);

See Load XML

【讨论】:

    【解决方案3】:

    我认为这应该可行。我使用了以下代码,对我来说效果很好。 这段代码不仅可以为一个xml文件添加数据,还可以用于多个xml文件。

        <?php
    
            // table headers --> SNo  Field  Value 
    
            $connection = mysql_connect("localhost","root","password"); 
            if (!$connection) {
                die("Database connection failed: " . mysql_error());
            }
    
            $db_select = mysql_select_db("forms_data",$connection);
            if (!$db_select) {
                die("Database selection failed: " . mysql_error());
            }
    
            mysql_query("CREATE table form_try11(id int(11) not null auto_increment,
                         Field varchar(100), 
                         Value varchar(100),
                         primary key(id)
                        )");
    
    
           $file1="C:\webserver\Apache\htdocs\php_json\file1.xml";
           $file2="C:\webserver\Apache\htdocs\php_json\file2.xml";
           $file3="C:\webserver\Apache\htdocs\php_json\file3.xml";
    
          $path_arr = Array($file1,$file2,$file3);
    
          for($count1=0; $count1<count($path_arr); $count1++){
          $xml = simplexml_load_file($path_arr[$count1]);
          $string= json_encode($xml);     
    
          $jsonIterator = new RecursiveIteratorIterator(
                new RecursiveArrayIterator(json_decode($string, TRUE)),
                RecursiveIteratorIterator::SELF_FIRST);
    
              foreach ($jsonIterator as $key => $val) {
                    if(is_array($val) || $key=="xmlns:xfa" || $key=="xfa:dataNode") {
    
                        continue;
                    } 
                    else {
    
                            $db_insert= mysql_query("INSERT INTO form_try11(Field,Value) VALUES('$key','$val') ");
    
                            if (!$db_insert) {
                                die("Database insert failed: " . mysql_error());
                            } 
                       }  
                }  
    
    
    
        }
    
    
        mysql_close($connection);
    
        ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-07
      • 1970-01-01
      • 2014-02-07
      • 1970-01-01
      • 2015-07-04
      • 2013-03-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多