簡體   English   中英

PHP PDO在MySQL中插入經度/緯度,並在插入前檢查是否存在

[英]PHP PDO Insert Longditude / latituded in Mysql and check if exists before insert

我試圖將地理位置正確插入到我的mysql數據庫中,以便我可以運行查詢以獲取設置半徑內的所有項目。

我的數據庫設置如下:--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

任何幫助將不勝感激

提前謝謝了 :)

MySQL的此錯誤表示您要插入的數字值大於該列類型的最大允許值。

我認為您需要再次檢查“ PointFromText ”的操作,或者可以將列類型更改為足夠大以容納給定值。

我的代碼實際上可以解決這個問題,因為我在locations表中也有一個latlon字段,我用lat lon值手動填充了該字段,因為此字段在導入時為null會引發錯誤:o)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM