mysql — php Foreach Loop, извлекающий только последнюю запись

Это мой PHP-код для извлечения данных из XML и вставки в мою таблицу MySQL.
Почему этот код извлекает только последнюю запись XML? Этот код извлекает и вставляет
100 CAPITAL TOWERS,MS ,Harare,JACKSON,MS,39201,100 CAPITAL TOWERs,100 CAPITAL TOWERS в таблицу, которая является последней записью XML.
Нам нужна помощь, чтобы вставить все записи сверху вниз в xml.

<?php
$con = mysql_connect("localhost","root","pass");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("db_name", $con);
if(!$vals=simplexml_load_file('local1.xml'))
{
trigger_error('Error reading XML file',E_USER_ERROR);
}
foreach ($vals as $record) {
$country = $record->country;
$state = $record -> state ;
$district = $record->district;
$city = $record->city;
$post_office = $record->post_office;
$postal_code = $record->postal_code;
$wings = $record->wings;
$house_no = $record->house_no;
}
$sql="INSERT INTO address(country, state,district,city,post_office,postal_code,wings,house_no)
VALUES
('$country','$state','$district','$city','$post_office','$postal_code','$wings','$house_no')";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo "Records added";
mysql_close($con)
?>

local1.XML:

<?xml version="1.0" encoding="UTF-8" ?>
<records>
<record>
<country>100 OLD MILL CREEK RD</country>
<state>NC  </state>
<district>Harare</district>
<city>FRANKLIN</city>
<post_office>NC  </post_office>
<postal_code>28734</postal_code>
<wings>100 OLD MILL CREEK RD</wings>
<house_no>100 OLD MILL CREEK RD</house_no>
</record>
<record>
<country>100 CAPITAL TOWERS</country>
<state>MS  </state>
<district>Harare</district>
<city>JACKSON</city>
<post_office>MS  </post_office>
<postal_code>39201</postal_code>
<wings>100 CAPITAL TOWERS</wings>
<house_no>100 CAPITAL TOWERS</house_no>
</record>
</records>

0

Решение

Попробуйте добавить свой sql-запрос в цикл foreach следующим образом:

foreach ($vals as $record) {
$country = $record->country;
$state = $record -> state ;
$district = $record->district;
$city = $record->city;
$post_office = $record->post_office;
$postal_code = $record->postal_code;
$wings = $record->wings;
$house_no = $record->house_no;

$sql="INSERT INTO address(country, state,district,city,post_office,postal_code,wings,house_no)
VALUES
('$country','$state','$district','$city','$post_office','$postal_code','$wings','$house_no')";

if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector