Порция XML-файл, который представляет проблему (файл XML имеет сотни записей клиентов)
вставки XML-данных в MySQL с PHP
<?xml version="1.0" encoding="utf-8"?>
<test>
<customer>
<name>customer 1</name>
<address>address 1</address>
<city>city 1</city>
<state>state 1</state>
<zip>zip 1</zip>
<phone>phone 1</phone>
<buyerinfo>
<shippingaddress>
<name>ship to</name>
<address>Ship address1</address>
</shippingaddress>
</buyerinfo>
<shippingDetail>
<saletax>
<saletaxamount>2</saletaxamount>
</saletax>
</shippingDetail>
</customer>...
Ниже мой код
//Xml string is parsed and creates a DOM Document object
$responseDoc = new DomDocument();
$responseDoc->load('test.xml');
foreach ($responseDoc->getElementsByTagName('customer') as $customer){
$sSQL = sprintf(
"INSERT INTO customer (name, address, city, state, zip, phone, shipto, shipadderss, tax)
VALUES ('%s','%s', '%s', '%s','%s','%s', '%s','%s','%s')",
mysql_real_escape_string($customer->getElementsByTagName('name')->item(0)->nodeValue),
mysql_real_escape_string($customer->getElementsByTagName('address')->item(0)->nodeValue),
mysql_real_escape_string($customer->getElementsByTagName('city')->item(0)->nodeValue),
mysql_real_escape_string($customer->getElementsByTagName('state')->item(0)->nodeValue),
mysql_real_escape_string($customer->getElementsByTagName('zip')->item(0)->nodeValue),
mysql_real_escape_string($customer->getElementsByTagName('phone')->item(0)->nodeValue)
?
?
?
);
$rResult = mysql_query($sSQL);
if(mysql_errno() > 0)
{
printf(
'<h4 style="color: red;">Query Error:</h4>
<p>(%s) - %s</p>
<p>Query: %s</p>
<hr />',
mysql_errno(),
mysql_error(),
$sSQL
);
}
}
Вопросы:
Как получить доступ для получения customer.buyerinfo.shippinga Значение узла ddress.name с использованием mysql_real_escape_string в моей инструкции insert? обозначенную «???»
Тот факт, что у меня есть два узла с тем же именем узла «имя», один является customer.name и другое customer.buyerinfo.shippingaddress. имя, чтобы назвать это проблематичным , чтобы использовать getElementsByTagName «Имя», чтобы получить значение.
так же, как и первый, но как я могу получить saletaxamount значение данных узла?
Просьба помочь. Спасибо!
1. Существует нет '??? 'в вашем коде. Любой, почему вы делаете такое нечестивое сочетание кода? Извлеките значения из XML ** THEN ** создайте свой запрос. смешивание его вместе, что делает совершенно неразборчивым бесполезным беспорядком. –
@ Marc B. Спасибо за ваш добрый отзыв. Я хотел сказать "???" в моей инструкции insert. Узнайте что-нибудь от вас «Совершенно нечитаемый бесполезный беспорядок». Вау! Спасибо вам за это. –