2012-05-29 2 views
0

У меня есть файл test.xmlВставить массив данных в PHP тузд

<propertyList date="2012-05-21-17:12:37" username="" password=""> 
<business modTime="2011-10-31-12:33:07" status="sold"> 
    <agentID>TEST</agentID> 
    <uniqueID>92134</uniqueID> 
    <listingAgent id="1"> 
    <name>Spiro Abelas</name> 
    <telephone type="BH"></telephone> 
    <telephone type="mobile">0414298899</telephone> 
    <email>[email protected]</email> 
    </listingAgent> 
    <listingAgent id="2"></listingAgent> 
    <address display="no"> 
    <state>NSW</state> 
    <postcode>2203</postcode> 
    <country>Australia</country> 
    </address> 
</business> 
</propertyList> 

И я сделал анализ полностью XML, как этот

<?php 
$xml = simplexml_load_file('test.xml'); 
foreach($xml as $key0 => $value){ 
echo "..1..[$key0] => $value"; 
foreach($value->attributes() as $attributeskey0 => $attributesvalue1){ 
echo "________[$attributeskey0] = $attributesvalue1"; 
} 
echo '<br />'; 
//////////////////////////////////////////////// 
foreach($value as $key => $value2){ 
echo "....2.....[$key] => $value2"; 
foreach($value2->attributes() as $attributeskey => $attributesvalue2){ 
echo "________[$attributeskey] = $attributesvalue2"; 
} 
echo '<br />'; 
//////////////////////////////////////////////// 
foreach($value2 as $key2 => $value3){ 
echo ".........3..........[$key2] => $value3"; 
foreach($value3->attributes() as $attributeskey2 => $attributesvalue3){ 
echo "________[$attributeskey2] = $attributesvalue3"; 
} 
echo '<br />'; 
//////////////////////////////////////////////// 
}} 
echo '<br />'; 
} 
?> 

Получение на те выходные

..1..[business] => ________[modTime] = 2011-10-31-12:33:07________[status] = sold 
    ....2.....[agentID] => TEST 
    ....2.....[uniqueID] => 92134 
    ....2.....[listingAgent] => ________[id] = 1 
    .........3..........[name] => Spiro Abelas 
    .........3..........[telephone] => ________[type] = BH 
    .........3..........[telephone] => 0414298899________[type] = mobile 
    .........3..........[email] => [email protected] 
    ....2.....[listingAgent] => ________[id] = 2 
    ....2.....[address] => ________[display] = no 
    .........3..........[state] => NSW 
    .........3..........[postcode] => 2203 
    .........3..........[country] => Australia 

Я хочу, чтобы нужно вызвать запрос типа (теперь он статический, но я хочу сделать его dyanmic)

insert into xml(business,agentID,uniqueID,listingAgent,name,telephone,email,state,postcode,country)values('sold', 'TEST', 92134, 1, 'Spiro Abelas', 0414298899, '[email protected]', 'NSW', '2203', 'Australia') 

так плз руководство к тому, как извлекать данные из массива и вставить в таблицу

+0

Вы пробовали смотреть на [примеры] (http://www.php.net/manual/en/simplexml.examples-basic.php)? – eggyal

ответ

1

После код будет конвертировать XML в массив.

$xml = '<?xml version="1.0" encoding="utf-8"?> 
     <propertyList date="2012-05-21-17:12:37" username="" password=""> 
     <business modTime="2011-10-31-12:33:07" status="sold"> 
      <agentID>TEST</agentID> 
      <uniqueID>92134</uniqueID> 
      <listingAgent id="1"> 
      <name>Spiro Abelas</name> 
      <telephone type="BH"></telephone> 
      <telephone type="mobile">0414298899</telephone> 
      <email>[email protected]</email> 
      </listingAgent> 
      <listingAgent id="2"></listingAgent> 
      <address display="no"> 
      <state>NSW</state> 
      <postcode>2203</postcode> 
      <country>Australia</country> 
      </address> 
     </business> 
     </propertyList> 
    '; 
$xml = simplexml_load_string($xml); 
$json = json_encode($xml); 
$array = json_decode($json,TRUE); 

вы можете выполнить над кодом и prinf данных, как показано ниже

print"<pre>"; 
print_r($array); 
print_r($array['business']['listingAgent']); 
print"</pre>"; 

Вы можете обрабатывать $ массив и сохранить в таблице.

+0

благодарит за ответ, плз мог бы объяснить его больше –

+0

Обновленный ответ для лучшего понимания. – pinaldesai

0

хранить данные в одном массиве

$data = asort($data); 
$keys = array_keys($data); 
$values = array_values($data); 
$sql = "INSERT INTO tablename (".implode(',',$keys).") VALUES (".implode(',',$values).")"; 

вручая sql injections оставляется вам.

Если вы используете PDO,

foreach($keys as $key) { 
    $str1 .= '?,'; 
} 
$sql = "INSERT INTO tablename (".implode(',',$keys).") VALUES (".substr($str1,0,-1).")";