Мне нужно вставить данные из xml в базу данных, но у меня есть проблема с этими конкретными данными
<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 для этого.
Просто используйте 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(); } }