Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将PHP和XML插入MYSQL_Php - Fatal编程技术网

将PHP和XML插入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

我正在使用下面的代码从我们的LBS服务提供商那里提取数据。我试图做的是将我收到的这些信息加载到mysql中

使用这段代码,我没有得到任何错误,位置和地图API的工作非常好,但它根本没有把数据放进mysql

<?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键。在公共网站上发布私钥不是一个好主意。