解决数据库报错Error 1390: Prepared statement contains too many placeho ...

打印 上一主题 下一主题

主题 963|帖子 963|积分 2889

今天在开发项目时,试着一次性插入大量数据,结果出现了以下报错:

 
 依稀记得以前也遇到过类似的问题,于是打算记录下错误原因及解决过程:
首先,这是由于sql语句中占位符数量限制导致的
Mysql默认支持的占位符最多为65535(2^16-1)个,即:写入数据为m列,n行。m*n必须小于65535
比如你要插入的字段有10列,一次性要插入10000条数据,则10*10000 = 100000,明显超过了65535,就会报错
解决方法:
我们只需要对数据进行切割插入即可,使用array_chunk方法
例如我刚开始是直接将$res一次性插入导致报错:
 

 

 
然后我现在使用array_chunk方法进行切割循环插入,一次最多插入10000条
(因为我只需要插入4个字段,故采用10000条插入,若字段较多则一次性插入的数据需酌情减少)
修改完成后变为:

 

$chunkRes = array_chunk($res,10000);
至此,该问题已得到解决
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

忿忿的泥巴坨

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表