【问题标题】:PHP PDO Insert Longditude / latituded in Mysql and check if exists before insertPHP PDO在Mysql中插入经度/纬度并在插入前检查是否存在
【发布时间】:2014-12-30 13:53:11
【问题描述】:

我正在尝试将地理位置正确插入到我的 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 pdo latitude-longitude point


    【解决方案1】:

    我的代码实际上可以解决这个问题,因为我在位置表中也有一个 latlon 字段,我手动填充了 lat lon 值,因为该字段在导入时为空,它会引发错误:o)

    【讨论】:

      【解决方案2】:

      MySQL 的这个错误意味着您插入的数值大于该列类型的最大允许值。

      我认为您需要再次检查您在“PointFromText”处所做的工作,或者您可以将列类型更改为大到足以容纳给定值。

      【讨论】:

      • 嗨,感谢您的回复,我已将 PointFromText() 更改为 GeomFromText(),它应该格式化该值以适合该字段,但它仍然会引发相同的错误,所以我认为情况并非如此。
      • 你能告诉我latlon列的类型是什么吗?
      • 另外看看下面的问题:stackoverflow.com/questions/16647641/…
      猜你喜欢
      • 2014-01-19
      • 1970-01-01
      • 2018-03-30
      • 2017-01-07
      • 1970-01-01
      • 2021-10-05
      • 1970-01-01
      • 2011-02-17
      • 1970-01-01
      相关资源
      最近更新 更多