我正在尝试将geolocations正确插入到我的mysql数据库中,以便我可以运行查询以获取集合半径内的所有项目。PHP PDO在MySQL中插入Longditude/latituded并检查插入之前是否存在
我的分贝设置像这样: --id(整数PK) --latlon(点空间索引)
和我的函数,它检查是否地理位置存在,如果不插入看起来像这样:
function addGeoLocation($long,$lat,$deal_id,$db)
{
if($long != '' && $long > 0){
$latlon = 'POINT('.$lat .' ' .$long.')';
$locs = $db->row("SELECT id FROM geolocations WHERE latlon = :latlon",array("latlon"=>$latlon));
if(!$locs)
{
$sql = $db->query("INSERT INTO geolocations set latlon = PointFromText(:latlon)",array("latlon"=>$latlon));
$location_id = $db->lastInsertId();
}
else
{
$location_id = $locs['id'];
}
$locs_pivot = $db->row("SELECT id FROM dailydeals_geolocations WHERE dailydeal_id = :deal_id AND geolocation_id = :location_id",array("deal_id"=>$deal_id,"location_id"=>$location_id));
if(!$locs_pivot)
{
$sql = $db->query("INSERT INTO dailydeals_geolocations (geolocation_id,dailydeal_id) VALUES(:location_id,:deal_id)",array("location_id"=>$location_id,"deal_id"=>$deal_id));
}
}
}
不管我怎么努力我只是不能让它插入地理我只是不停收到此错误:
Unhandled Exception. <br />SQLSTATE[22003]: Numeric value out of range:
1416 Cannot get geometry object from data you send to the GEOMETRY field
任何帮助会收到
提前:)
喜感谢你的答复我已经改变了PointFromText()GeomFromText()应该格式化该值以适应字段,但它仍然抛出相同的错误,所以我不认为这是事实。 –
你能告诉我什么是拉丝龙柱的类型? –
也看看下面的问题:http://stackoverflow.com/questions/16647641/saving-spatial-data-in-cakephp –