我已經將xml文件導入FTP服務器。這是存儲在位置「/的public_html/ctrackxml /」有一個隨機文件名和格式如下:PHP代碼 - 從Web服務器(/ public_html/ctrackxml)導入xml文件到mysql數據庫
<message type="POSITIONDATA">
<messageid>-1</messageid>
<mobile>SNK261GP</mobile>
<time>2012/01/20 08:34:45 AM</time>
<latitude>-29.8477</latitude>
<longitude>30.9554</longitude>
<status>Driving</status>
<speed>82</speed>
<address> near Outer Ring Road (N2); Umkumbaan; in Durban</address>
<direction>
</direction>
<runningodo>1587000</runningodo>
</message>
我需要遍歷文件夾中的所有文件和每個文件導入MySQL數據庫表XMLDATA其具有以下結構:
我需要在XML文件的每個標籤被導入到在表中一個單獨的字段。所以每個xml文件都代表一個表項。
從我做的研究看來,我需要使用'LOAD XML LOCAL INFILE'mysql語法,但是我似乎無法讓它直接在mysql中正常工作。
如果你能指出我正確的方向,我將不勝感激。
更新
下面是我甲肝emanaged與其他網站的幫助湊的代碼。 http://www.phpfreaks.com/forums/index.php?topic=244744.0
我測試了phpfreaks的腳本,它的工作原理是100%,但是xml結構是完全不同的。我試圖修改代碼來適應我的XML文件,但我有一些問題,以使其工作。
我的代碼如下,但目前未能ONT他foreach語句:
<?php
echo "starting <br><br>";
//mysql connection
$con2 = mysql_connect("localhost","dbuser","dbpassword");
if (!$con2) { die('Could not connect: ' . mysql_error()); }
$selectdb = mysql_select_db("dbname", $con2);
if (!$selectdb) { die('Database not used: ; ' . mysql_error()); }
echo "connected to DB<br/><br/>";
//simplexml load xml file
$library = simplexml_load_file('http://www.website/ctrackxml/CTO_20120119140006_0000.xml');
echo "xml loaded<br/><br/>";
//loop through parsed xmlfeed and print output
foreach ($message->message as $message) {
printf("messageid: %s\n", $messageid->messageid);
printf("mobile: %s\n", $mobile->mobile);
printf("time: %s\n", $time->time);
printf("latitude: %s\n", $latitude->latitude);
printf("longitude: %s\n", $longitude->longitude);
printf("status: %s\n", $status->status);
printf("speed: %s\n", $speed->speed);
printf("address: %s\n", $address->address);
printf("direction: %s\n", $direction->direction);
printf("runningodo: %s\n", $runningodo->runningodo);
echo "xml parsed<br/><br/>";
//insert into databse
mysql_query("INSERT INTO xml (messageid, mobile, time,latitude,longitude,status,speed,address,direction,odometer)
VALUES (\"$messageid->messageid\", \"$mobile->mobile\", \"$time->time\", \"$latitude->latitude\", \"$longitude->longitude\", \"$status->status\", \"$speed->speed\", \"$address->address\", \"$direction->direction\", \"$runningodo->runningodo\")")
or die(mysql_error());
echo "inserted into mysql<br/><br/>";
//show updated records
printf ("Records inserted: %d\n", mysql_affected_rows());
}
//close connection
mysql_close($con2);
?>
感謝一如既往對大家的幫助。
PHP的[SimpleXML](http://us2.php.net/manual/en/book.simplexml.php)可能會成爲這項工作的最佳工具,如果你最終沒有獲得LOAD XML'工作。 – Charles
嗨@Charles,請參閱我的問題的更新?你能幫助我使用這個腳本,目前不符合foreach。謝謝, – Smudger
xml中的根元素是什麼? – 2012-01-20 13:26:19