今天在处理微擎添加商品的时候,添加过多的商品导致,商品的数据丢失,研究的一天,发现微擎中的PDO_UPDATE 方法中会把这种大的sql 弄丢失掉。
经过度娘和研究中解决
解决方案:
1,修改代码,把pdo_update 的方法替换为pdo_query .,$sql 在方法中拼接好,不使用pdo_update 里的组装方法。
2,修改mysql 的配置文件,my.cnf
max_allowed_packet = 30M
net_buffer_length =10M
重启mysql 服务
service mysqld restart
ok
在此添加商品,ok 保存成功,数据没有丢失。
----------------------------------2019-10-23 ------更新-----------------------------------------------
上面的是在我本地是没有问题的,但是到服务器上又不不行了,各种查完后发现需要修改 php.ini 文件
php.ini
max_input_vars = 4000
google一下,原来PHP从5.3.9开始增加一个变量 max_input_vars 用来限制提交的表单数量,折腾了半天,原来php小版本升级引起的不兼容,php中默认post中的参数的个数是1000, 超过部分会被自动扔掉。用 phpinfo()查看max_input_vars。如下图所示:
解决方法很简单,在PHP.ini中设置 max_input_vars = 5000
php.ini 文件里的 max_input_vars 默认值为 1000, 正常情况下够用,偶尔遇到我这种提交2000多个表单的情况还是比较少见的,不过,如果发现提交表单个数不全的情况,可以试试修改这个配置。