2014-12-30 92 views
1

我正在嘗試將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 

任何幫助會收到

提前:)

回答

0

非常感謝的MySQL的這個錯誤意味着你插入一個數值大於該列類型的最大允許值大。

我認爲您需要再次檢查您在「PointFromText」中所做的操作,或者您可以將列類型更改爲足夠大以容納給定值。

+0

喜感謝你的答覆我已經改變了PointFromText()GeomFromText()應該格式化該值以適應字段,但它仍然拋出相同的錯誤,所以我不認爲這是事實。 –

+0

你能告訴我什麼是拉絲龍柱的類型? –

+0

也看看下面的問題:http://stackoverflow.com/questions/16647641/saving-spatial-data-in-cakephp –

0

我的代碼實際工作這個問題是我有一個latlon場也是在位置表,我手動與緯度經度值填充,因爲該字段爲空進口它拋出的錯誤:O)

相關問題