我尝试将表单的位置信息保存到WAMP服务器数据库中。我可以在phpmyadmin页面中使用insert
函数向表添加记录。
但是当我insert
在表单中进行协调并提交此信息以将信息保存到数据库中时,我会看到此错误:
Data truncated for column 'lat' at row 1
我用这个列定义我的表:
place_id: int(10)
p_name: varchar(50)
lat: float(30,27)
lng: float(30,27)
addr: varchar(100)
tel: int(12)
category: varchar(15)
description: varchar(200)
我尝试保存的坐标之一是:
(47.61304128921687,-122.29001998901367)
该纬度为float(16,14)
除了数据长度错误外,代码中可能出错。
答案 0 :(得分:1)
您使用非标准语法来声明FLOAT列。
http://dev.mysql.com/doc/refman/5.6/en/floating-point-types.html
尝试将这些列声明为FLOAT
或DOUBLE
。括号后的数字不会影响数字的存储,只会影响格式。
顺便说一句,47.61304128921687伪装成南北位置,精度约为1.1纳米。这显然不是那么精确。如果您正在使用商用级GPS,FLOAT可以为您处理的数据提供足够的精确度。如果您知道UTM和Lambert投影之间的区别,DOUBLE将满足您的需求。
答案 1 :(得分:0)
14位小数是不现实的。即使 5 decimal places = 0.00001度= 1.1132米(赤道)也可能无法实现,
<强>纬度强>
FLOAT(7,5)能够存储三位数和五位小数的任何值,因此可以存储在lat列中的值范围为-99.99999到99.99999(最大值)+90 -90(实际最大值) )
<强>经度强>
FLOAT(8,5)能够存储三位数和五位小数的任何值,因此可以存储在lng列中的值范围为-999.99999到999.99999(最大值)+180 -180(实际最大值) )