昨晚我发布了这个问题,但我说错了,没有正确解释。我正在尝试缓存googlemaps地理编码结果,以用于我所做的消防映射,我接近谷歌的限制,因此需要缓存结果。救命啊!
下面的代码有点起作用,但每次代码运行时它都会创建一个新的sql记录,而不管该地址是否已存在于数据库中。它似乎只调用谷歌然后保存数据,然后从数据库加载数据确定,它看起来像其余的工作,但我只是看不到我错在哪里..正如我所说,它创建了一个新的记录每次代码运行时,我都会得到一个充满相同记录的数据库。我的大脑很痛,但我真的需要这个工作,所以我可以继续帮助消防车开火。 :)
哦,我在googlemaps上使用地理编码结果(正如T& C所允许的),这段代码实际上只是为了让它运行起来。我希望这是有道理的,我希望有人可以帮助...谢谢:)。
<?php
$jobadd = "1000 BURWOOD HWY, BURWOOD";
// connect to the database
include('connect-db.php');
// get results from database and find needle
$result = mysql_query("SELECT * FROM geocache")
or die(mysql_error());
while($row = mysql_fetch_array( $result ))
{
$needle = '' . $row['address'] . '';
if (strpos($jobadd,$needle) !== false)
{
$status = "CACHED";
$latitude = '' . $row['latitude'] . '';
$longitude = '' . $row['longitude'] . '';
}
else
{
$status = "GOOGLE";
$address2 = "$jobadd, Victoria, Australia";
define("MAPS_HOST", "maps.google.com");
$base_url = "http://" . MAPS_HOST . "/maps/api/geocode/xml";
$request_url = $base_url . "?address=" . urlencode($address2) ."&sensor=false";
$xml = new SimpleXMLElement(file_get_contents($request_url));
$latitude = $xml->result->geometry->location->lat;
$longitude = $xml->result->geometry->location->lng;
// save the data to the database
mysql_query("INSERT geocache SET address='$jobadd', latitude='$latitude', longitude='$longitude' ")
or die(mysql_error());
}
}
echo $status;
echo '<BR>';
echo $jobadd;
echo '<BR>';
echo 'LAT:';
echo $latitude;
echo '<BR>';
echo 'LON:';
echo $longitude;
?>
答案 0 :(得分:0)
您是否尝试输出strpos的结果?逻辑看起来不正确。问题出在if条件中。 DB中的记录是什么样的?