将PHP和XML插入MYSQL
我正在使用下面的代码从我们的LBS服务提供商那里提取数据。我试图做的是将我收到的这些信息加载到mysql中 使用这段代码,我没有得到任何错误,位置和地图API的工作非常好,但它根本没有把数据放进mysql将PHP和XML插入MYSQL,php,Php,我正在使用下面的代码从我们的LBS服务提供商那里提取数据。我试图做的是将我收到的这些信息加载到mysql中 使用这段代码,我没有得到任何错误,位置和地图API的工作非常好,但它根本没有把数据放进mysql <?php function parseXML($fstr,$tstr_start,$tstr_end) { if ( ! strstr($fstr,$tstr_start) || !strstr($fstr,$tstr_end) ){ return ; } $start = str
<?php
function parseXML($fstr,$tstr_start,$tstr_end) {
if ( ! strstr($fstr,$tstr_start) || !strstr($fstr,$tstr_end) ){
return ;
}
$start = strpos($fstr,$tstr_start) + strlen($tstr_start);
$stop = strpos($fstr,$tstr_end, $start);
$length = $stop - $start;
return trim(substr($fstr, $start, $length));
}
define ("MAP_API_KEY","***");
define ("MAP_BASE_URL","http://maps.googleapis.com/maps/api/staticmap?");
$Data = $GLOBALS["HTTP_RAW_POST_DATA"];
//--- Get XML data into variables
$DataAry['ResponseType'] = parseXML($Data,'Response Type="','"');
$DataAry['RefNo'] = parseXML($Data,'RefNo="','"');
$DataAry['SeqNo'] = parseXML($Data,'SeqNo="','"');
$DataAry['Network'] = parseXML($Data,'<NetworkID>','</NetworkID>');
$DataAry['Lat'] = (int) parseXML($Data,'<Lat>','</Lat>');
$DataAry['Lon'] = (int) parseXML($Data,'<Lon>','</Lon>');
$DataAry['Accuracy'] = parseXML($Data,'<Accuracy>','</Accuracy>');
$DataAry['DateTime'] = parseXML($Data,'<DateTime>','</DateTime>');
$DataAry["Lat"] = $DataAry['Lat']/1000000;
$DataAry["Lon"] = $DataAry["Lon"]/1000000;
$con = mysql_connect("localhost","****","****");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("****", $con);
$sql="INSERT INTO trace (Lat, Lon, DateTime, RefNo)
VALUES
('$_POST[Lat]','$_POST[Lon]','$_POST[DateTime]','$_POST[RefNo]')";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
// ---Create link to map
$link = MAP_BASE_URL . "center={$DataAry['Lat']},
{$DataAry['Lon']}&zoom=15&size=500x500&key=" . MAP_API_KEY . "&sensor=true&markers=
{$DataAry['Lat']},{$DataAry['Lon']}";
$handle = fopen("requests.php","c");
fwrite($handle, "<br/>Location Request @ ". date("Y-m-d H:i:s") . "<br/><textarea
style='width:500px;height:200px' readonly>" . $GLOBALS["HTTP_RAW_POST_DATA"] . "
</textarea><br/><img style='border:1px solid #000;width:500px;height:500px'
src='$link'/><hr/>");
fclose ($handle);
echo "done!";
?>
不过,它确实会按照请求将其放入requests.php页面,但我需要将信息提取到msql中。第一个问题是,在
$\u POST
数组的字符串键索引周围没有引号。您可能想把!mysql\u query($sql,$con)
在一个try-catch中,查看是否捕捉到任何错误。此外,PHP中mysql_*函数的使用已被弃用,不应再使用。由于您使用的是mysql_*函数,因此也容易受到SQL注入的攻击 。它们不再得到维护。看到了吗?相反,学习,并使用or-将帮助您决定哪一个。如果您选择PDO,。您正在插入查询中使用$\u POST,请将其更改为$DataAry。在有人决定自己尝试使用该映射API键之前,您可能希望从代码中删除该映射API键。在公共网站上发布私钥不是一个好主意。