被mysql隐式类型转换坑了一波
有个订单表,订单编号使用int类型字段,有人入参了订单编号123456?去做关联操作,然后数据库
select * from order where order_number='123456?'
特么的,竟然还被他查出订单编号为123456的,然后还执行了关联操作,
但是更新的时候使用123456?却因为没有找到数据而更新为空,注意,不是失败,只是update条件不符合,所以不更新。
这时因为 MySQL 在比较 INT 和字符串时,自动把 '123456?' 转成了 123456,然后匹配成功
还好我保留了一个月的日志,不然这个坑,怎么都找不到
别问我为什么变量不用int,而是使用string,因为这个项目是个坑,所有入参的参数,后端接收转换都为 string类型
当时我接手的时候,也是一脸懵逼的

浙公网安备 33010602011771号