2014-08-29 76 views
2

的mysql我必須從XML到數據庫中插入數據,但我有這個特定數據的問題插入XML數據,用SimpleXML

<specifications> 
    <attribute_group name="attributeGroup1"> 
     <attribute name="attribute1">     
      <value>value1</value> 
     </attribute> 
     <attribute name="attribute2">     
      <value>value2</value> 
     </attribute> 
     <attribute name="attribute3">     
      <value>value3</value> 
     </attribute> 
    </attribute_group> 
<specifications> 

我需要插入到數據庫類似

INSERT INTO specs (attr_group,attr_name, attr_value) VALUES ('$attr_group','$attr_name', '$attr_value') 

問題是我不知道如何爲此創建foreach。

+0

你有一個錯字:爲'' – Ghost 2014-08-29 08:05:01

+0

是,錯字:)謝謝沒有結束標籤。 – gandrap 2014-08-29 08:54:30

回答

3

只需使用SimpleXML,訪問這些值,並只需執行正常的foreach和插入代碼(MySQLi或PDO)即可。

示例代碼:

$db = new mysqli('localhost', 'username', 'password', 'database'); 
$xml = simplexml_load_string($xml_string); // or load file 
$insert = $db->prepare('INSERT INTO specs (attr_group,attr_name, attr_value) VALUES (?, ?, ?)'); 

foreach($xml as $group) { 
    $attribute_group = (string) $group->attributes()['name']; 
    foreach($group as $attr) { 
     $attribute = (string) $attr->attributes()['name']; 
     $value = (string) $attr->value; 
     $insert->bind_param('sss', $attribute_group, $attribute, $value); 
     $insert->execute(); 
    } 
} 
+0

謝謝。那是我需要的。我仍然在學習PHP。 – gandrap 2014-08-29 08:53:15