我在mysql中创建了一个表Place。在此表中有三个字段。
1. Place_Name varchar(20)
2. latitude decimal(15,12)
3. longitude decimal(15,12)
当用户在纬度或经度中插入55636.1232之类的值时会出现问题。
因为此值高于这些字段的容量范围。因为我允许3
当用户试图在小数点前输入3位以上时,小数点前的数字
分。在这种情况下插入999.999999999999值,但我想插入我的默认值
如果用户犯了这样的错误,请输入值。
我希望当用户执行此类错误时,应在该记录中输入我的默认值。
请帮助我如何解决此类问题。我在等你的建议。
提前谢谢。
答案 0 :(得分:2)
您应该通过执行
将SQL模式设置为strict_all_tablesSET sql_mode='STRICT_ALL_TABLES';
这将防止输入无效数据,并且违规将抛出此MySQL错误:
第1行“纬度”列的超出范围值
答案 1 :(得分:0)
你可以在你的mysql语句中写一个case语句。
CASE case_value
WHEN when_value THEN statement_list
[WHEN when_value THEN statement_list] ...
[ELSE statement_list]
END CASE
http://dev.mysql.com/doc/refman/5.0/en/case-statement.html
所以在你的情况下,你可能会写一些类似的东西:
Insert Into coordinates (Place_Name,latitude,longitude)
Values
('$name',
Case $latitude When $latitude > 99.999 Then '$defaultLat' Else '$latitude' End Case,
Case $longitude When $longitude > 99.999 Then '$defaultLong' Else '$longitude' End Case);