如何在一列中将多个数据插入数据库[重复]

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
)

【讨论】:

以上是关于如何在一列中将多个数据插入数据库[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在一条语句中将多行插入 DB2?

sql中如何使一列中的多个重复数据只显示一次, 求大神指导,使得图中的班简名重复的只显示一次。

Laravel - 在数据库中在一列中插入动态图像数组 JQuery

如何使用 sequelize 在一个数据库请求中将数据插入多个表?

R:如何使用其他列中的数据在一列中创建多个新值并为每个新值重复行?

如何在netbeans java中将图像插入mysql数据库