用MySQL的DDM做存储时,int型字段的值被改变问题(PHP语言)

原因:因为PHP是弱类型语言,所以int和string有时会混乱使用,导致使用DDM云服务时,出现了转义字符串的问题。

表结构


详情:当你更新语句 【UPDATE testSET `value` ='1' WHERE `id` =1;】

value是字符串1时,它会自动转成【UPDATE testSET `value` =X'30' WHERE `id` =1;】,更新后value的值变成49。

找了很久的原因,确定了问题不在代码逻辑以及DDM服务那边,终于找到了配置问题,PDO的ATTR_EMULATE_PREPARES配置为true即可。

解决:

laravel框架中的配置

拓展:虽然这样解决了,但是当前端使用的是强类型语言时,会遇到另一个问题,那就是返回的数据中int类型的字段变成了string类型,目前没找到什么特别简便的方法,比较笨的在每个Model中配置了$casts,如图,


所有需要int返回的数据都配置成integer

如果有简便的配置方法欢迎交流

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容