解决数据库报错Error 1390: Prepared statement contains too many placeholders的问题

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

解决数据库报错Error 1390: Prepared statement contains too many placeholders的问题

依稀记得以前也遇到过类似的问题,于是打算记录下错误原因及解决过程:

首先,这是由于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);

至此,该问题已得到解决

Original: https://www.cnblogs.com/luluBear/p/16534683.html
Author: 杏寿郎
Title: 解决数据库报错Error 1390: Prepared statement contains too many placeholders的问题

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/612721/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球