次のように定義された $xml から MySQL DB を作成する方法は?
$xml = simplexml_load_string($line);
このジョブの一部を自動化する事前定義機能はありますか? または、DOM を使用する必要がありますか?
これはうまくいくはずだと思います。私は次のコードを使用しましたが、うまくいきました。このコードは、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);
?>
私が知っている定義済みの機能はありませんが、次のことができます。
を使用してすべての変数を表示します
var_dump($xml);
次に、ループを実行して、次のようにデータベースに挿入します。
foreach($xml as $element)
{
$PDO->prepare('INSERT .....');
$PDO->bindParam(blah,blah);
$PDO->execute()
}
すべてのファイルをテーブルにプルしようとしている場合は、SQL ステートメントを使用してインポートできます。
LOAD XML LOCAL INFILE 'your_xml_file.xml'
INTO TABLE your_table_name(field_one,field_two,....);