项目实记-数据库数字英文字符串转数字(低级错误)

项目实记-数据库数字英文字符串转数字

功能需求:根据渠道code、日期、统计pv、uv等;

异常描述:如下图id=3的那条数据code携带了其他参数(原设计只存放纯code)
id为2的渠道code携带了其他参数
问题1: 字段字符类型设计问题
设计的时候还不确定渠道code的字符类型长度(定义varchat(100))依赖友盟生成,在实际使用后渠道code为10位数整形数字 小于int类型最大值2147483647,但是不确定后续是否会超出范围或长度还是保留varchat(20)长度改为20

问题2: 接口没做限制注入问题
这个问题是最致命的,低级错误!参数未校验直接写进sql

错已发生,赶快修复才是,祭天的事情往后放!

1、接口参数校验加上(正则整形数字\或者number校验)
2、旧数据code参数修改(conver(code,unsigned))

update table set code = CONVERT(code,UNSIGNED) WHERE id=3;
错误:
Truncated incorrect INTEGER value: ‘103432?http://www.baidu.com/111’

正确修改在update 后面加上 IGNORE
update IGNORE table set code = CONVERT(code,UNSIGNED) WHERE id=3;
成功 Affected rows:1
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值