我认为这是一个简单的问题。不幸的是,我不知道如何让它发挥作用。
我有一个xml数据表,看起来像这样:
<leads>
<leadDetails>
<lead_id>3886961</lead_id>
<campaign_id>1173</campaign_id>
<campaign_name>Tesco vs Argos - Submit (UK)</campaign_name>
<subID>N/A</subID>
<gateway>yes</gateway>
<ip>109.155.249.140</ip>
<referring_url>http://adworkmedia.com/gTemplate.php?GID=1514&pubID=2312&sid=&ST=
</referring_url>
<date>2012-03-24 07:19:07</date>
<payout>$0.70</payout>
<status>Credited</status>
</leadDetails>
</leads>
我应该补充一点,这个XML表不是在我的服务器上托管的,而是在我获得新线索时由我的网络动态更新的。如果需要,请随时问我更多问题。
我的问题是:如何编写一个代码来读取XML页面,并将日期、IP和campaign_name上传到mySQL表中。
谢谢!
嗨。
if( $xml = simplexml_load_file("the_url_of_xml"))
{
foreach($xml->leads->leadDetails as $detail)
{
$camp_id = $detail->campaign_id;
$camp_name = $detail->campaign_name;
$sql = "INSERT INTO myTable (id,name) VALUES ('$camp_id','$camp_name')";//AND so on
mysql_query($sql);
}
}
这是一个很好的入门教程教程链接
这只是您参考的起点,使用SimpleXML和PDO:
$xml = simplexml_load_file('http://yourhost.com/somefile.xml');
$pdo = new PDO('mysql:dbname=test;host=localhost', 'user', 'pass');
foreach ($xml->leadDetails as $lead) {
$stmt = $pdo->prepare('INSERT INTO table (createdAt, ip, campaign_name) VALUES (NOW(), ?, ?)');
$stmt->execute(array(
$_SERVER['REMOTE_ADDR'],
$lead->campaign_name
));
}
JSON在我看来是一种更好的格式,但对于XML来说,它非常简单。
<?php
$con = mysql_connect("username","password","host");
mysql_select_db("database_name",$con);
$xmlObj = new SimpleXMLElement($xml); //replace $xml with your XML string.
foreach($xmlObj->leadDetails as $details){
$date = $details->date;
$ip = $details->ip;
$campaign_name = $details->campaign_name;
mysql_query("INSERT INTO `table_name` (`date`,`ip`,`campaign_name`) VALUES ('$date','$ip','$campaign_name')",$con);
}
?>