2011-07-30 6 views
0

以下のコードでは、私のXMLの要素がDB内のフィールドと同じ名前と順序でなければならないという制限を加えて、XMLファイルをmySQLにインポートします。 [OK]を同じ名前が、私は異なる順序で多くのXMLを処理するため、それらの順序に問題があります。simpleXMLを使用して要素の値をこの配列に割り当てる方法を教えてください。

私の質問は、$ product-> name、$ product-> idなどのフィールドに値を割り当てることができるように、既存のコードを編集するにはどうすればいいですか?私の難しさは配列を使っているからです。

これは私のDB構造id, name, description, price, image, url, category, category_id, shopidですが、私のXMLのいくつかはこの順序ではありません。

ありがとうございます。あなたが何をしたいか

$xml = simplexml_load_file('test.xml'); 
foreach($xml->product as $product) 
{ 
    $columns = array(); 
    $data = array(); 
    foreach($product->children() as $child) 
    { 

     $columns[] = $child->getName(); 
     $data[] = mysql_real_escape_string((string)$child); 

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

} 

答えて

0

ので、あなたがオブジェクト例えば$製品 - > IDとして製品にアクセスできるオブジェクトにXMLをシリアル化です。ここでそれについて読むにはうまくいくでしょう:http://www.devshed.com/c/a/PHP/Serializing-XML-With-PHP/(すべてのステップ)。次に、PDO(Part of PHP)を使用して準備済みの文を使用してSQLを実行します。なぜPDOを使用するのが良いのか、またPDOの使用方法についてはこちらをご覧ください。http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/

これらの2つのリンクのいずれかの情報を理解するのを手伝ってください。

関連する問題