laravel 5.7 mysql5.7 数据插入更新的问题
最近信息技术安全等级保护查的比较严,数据库方面也有要求.为了满足要求,使用某些mysql插件,把数据库升级到了5.7,在做项目的时候发现了一些问题:
laravel在插入,更新数据的时候,没有给字符串加上引号,导致错误.
手动修改了一下代码(HasAttributes中的setAttribute,将$this->attributes[$key] = $value改为$this->attributes[$key] = "'".$value."'";),插入/更新数据的时候没有问题了.
但是很奇怪,laravel没有对这个进行处理吗?这么改以后会不会有隐患?
自动生成的sql语句如下;
insert into `company` (`username`, `usercode`, `company_name`, `belong_leader`, `reverimg`, `audit`, `register_time`, `password`) values (111111111111, 经理, 1231212123123, 1, /uploadfile/20190815/1565852747undefined.jpg, 1, 1565852773, 8a9e3ceb7b28de854d7235a886e0745a)
3 Comments
之前我也发现了,查询没问题更新就不行
如果laravel没有加上引号,那我写的那些代码可能早就垮了,查看laravel的error log里面的sql语句的时候,是没有带引号的,但是查看真正执行了的sql语句是带了引号的,建议你重新看一下代码,有没有其他漏了的问题,不要修改那部分代码
你这个问题我也碰到过,应该是你数据库的表的字符集,以及字段的字符集的问题,修改成utf8的。我是将我的字符集改了,原来的latin1的,后来改成utf8