如何在一列中将多个数据插入数据库[重复]
Posted
技术标签:
【中文标题】如何在一列中将多个数据插入数据库[重复]【英文标题】:How to Insert Multiple Data to Database in One Column [duplicate] 【发布时间】:2018-09-30 18:00:24 【问题描述】:我想在一列中将我的数组数据插入数据库。
我在数据库中的列是id(auto increment)
& datas
。
我在这里尝试,我得到了错误。
我想要这样的数据
id(primary)(AI)(INT) datas(varchar:255)
-------- ----
1 3001182708
2 3001182713
3 3001183215
我尝试使用这个答案https://***.com/a/10054725/9661872
$rand_post = ["3001182708", "3001182713", "3001183215", "3001183558", "3001183753"];
$prep = array();
foreach($rand_post as $k => $v )
$prep[':'.$k] = $v;
$sth = $db->prepare("INSERT INTO tes (`datas`) VALUES (" . implode(', ',array_keys($prep)) . ")");
$res = $sth->execute($prep);
致命错误:未捕获的 PDOException:SQLSTATE[21S01]:插入值列表 与列列表不匹配:1136 列数与值不匹配 在 C:\xampp\htdocs\savelink\index.php:23 中的第 1 行计数 堆栈跟踪:
0 C:\xampp\htdocs\savelink\index.php(23): PDOStatement->execute(Array) #1 main 抛出
C:\xampp\htdocs\savelink\index.php 第 23 行
【问题讨论】:
我认为不同的问题 您的表中datas
列的类型是什么?
不清楚您在问什么,您想将所有这些数据插入一行吗?或者你想插入差异行。
@Pavel varchar
@JitendraSoftgrid 我正在编辑我的问题,希望你能理解
【参考方案1】:
问题是因为每次执行循环时都会增加 preps 数组的大小,因此第二次尝试在查询中仅指定 1 列时插入 2 个值。
我认为这就是你想要做的。基本上它形成了整个 preps 数组,然后从中构建语句并执行它。
$rand_post = ["3001182708", "3001182713", "3001183215", "3001183558", "3001183753"];
$prep = array();
foreach($rand_post as $k => $v )
$prep[':'.$k] = $v;
print_r($prep);
$sth = $db->prepare("INSERT INTO tes (`datas`) VALUES (" . implode('), (',array_keys($prep)) . ")");
$res = $sth->execute($prep);
如果你在最后查看 $sth 和 $prep,你会得到 p>
INSERT INTO tes (`datas`) VALUES (:0), (:1), (:2), (:3), (:4)
Array
(
[:0] => 3001182708
[:1] => 3001182713
[:2] => 3001183215
[:3] => 3001183558
[:4] => 3001183753
)
【讨论】:
以上是关于如何在一列中将多个数据插入数据库[重复]的主要内容,如果未能解决你的问题,请参考以下文章
sql中如何使一列中的多个重复数据只显示一次, 求大神指导,使得图中的班简名重复的只显示一次。
Laravel - 在数据库中在一列中插入动态图像数组 JQuery
如何使用 sequelize 在一个数据库请求中将数据插入多个表?