0

次のように定義された $xml から MySQL DB を作成する方法は?

$xml = simplexml_load_string($line);

このジョブの一部を自動化する事前定義機能はありますか? または、DOM を使用する必要がありますか?

4

3 に答える 3

2

これはうまくいくはずだと思います。私は次のコードを使用しましたが、うまくいきました。このコードは、1 つの 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);

    ?>
于 2013-04-11T10:32:17.223 に答える
1

私が知っている定義済みの機能はありませんが、次のことができます。

を使用してすべての変数を表示します

var_dump($xml);

次に、ループを実行して、次のようにデータベースに挿入します。

foreach($xml as $element)
{
    $PDO->prepare('INSERT .....');
    $PDO->bindParam(blah,blah);
    $PDO->execute()
}
于 2012-07-23T18:28:45.053 に答える
1

すべてのファイルをテーブルにプルしようとしている場合は、SQL ステートメントを使用してインポートできます。

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

XML のロードを参照してください。

于 2012-07-23T18:33:33.937 に答える