2011-07-23 7 views
0

XMLをmySQLにインポートしようとしています。しかし、今私が持っているのは、最初のものだけです(以下のXMLとして)。私が欲しいと思っているのは、XMLやその他のルート要素を追加することです。 コードが私が使用する正確なフィールドにローカライズされているかどうかは関係ありません。XMLからmySQLへのスクリプトの配列に問題があり、複数のノードをインポートできません。

テーブルの名前はxml2msqlで、フィールドは、身体を見出し、から、にあります。

自分でコードを作成すれば、それを私と共有すれば素晴らしいことでしょう。

xml要素とmysqlフィールドが同じで、同じ順序であれば、以下のコードは一種のグローバル化されています。

$columns = array(); 
$data = array(); 
$xml = simplexml_load_file("test.xml"); 
echo $xml->getName() . "<br />"; 
foreach($xml->children() as $child) 
    { 
    echo $child->getName() . ": " . $child . "<br />"; 
    $columns[] = $child->getName(); 
    $data[] = (string)$child; 

    } 

$col = '`'. implode('`,`',$columns) .'`'; 
$val = "'". implode("','",$data)."'"; 
$query = "INSERT INTO xml2mysql ($col) VALUES ($val)"; 
echo $query; 
mysql_query($query); 

この

<note> 
<to>Tove</to> 
<from>Jani</from> 
<heading>Reminder</heading> 
<body>Dont forget me this weekend!</body> 
</note> 

上記のコードで動作するXMLであり、これは、あなたがこのような各ノートを反復処理する必要があることが好ましいXML

<notes> 
<note> 
<to>Tove</to> 
<from>Jani</from> 
<heading>Reminder</heading> 
<body>Dont forget me this weekend!</body> 
</note> 
<note> 
<to>Mary</to> 
<from>Nick</from> 
<heading>Letter</heading> 
<body>Reminder about your dog</body> 
</note> 
<notes> 
+0

*(ヒント)* http://rpbouman.blogspot.com/2006/03/importing-xml-data-into-mysql-using.html – Gordon

答えて

0

です:

foreach($xml->note as $note) 
{ 
    $columns = array(); 
    $data = array(); 
    foreach($note->children() as $child) 
    { 
     echo $child->getName() . ": " . $child . "<br />"; 
     $columns[] = $child->getName(); 
     $data[] = (string)$child; 
    } 
    $col = '`'. implode('`,`',$columns) .'`'; 
    $val = "'". implode("','",$data)."'"; 
    $query = "INSERT INTO xml2mysql ($col) VALUES ($val)"; 
    echo $query; 
} 

私はこれをあなたが提供したXMLはそのトリックです。

+0

ありがとう、それは素晴らしいです!私が列配列とそれに関連するものを削除し、 'INSERT INTO xml2mysql(to、from、heading、body) 'のようなクエリを実行すると、パフォーマンス上何かが得られますか、列配列は必須ですか? – EnexoOnoma

+0

いつでも、私は助けてうれしいです。将来的にXMLが変更された場合のように、テーブル内に存在しない列にデータを追加しようとすると、問題が発生する可能性があります。 –

+0

Matt、私のデータの中には、mysqlにsytnaxエラーを出す '' 'が含まれています。どのように私はこれをエスケープできますか? – EnexoOnoma

関連する問題