在MySQL多次插入中将数组值加入字符串

Posted

技术标签:

【中文标题】在MySQL多次插入中将数组值加入字符串【英文标题】:Joining array values into string in MySQL multiple insert 【发布时间】:2015-05-10 07:50:55 【问题描述】:

在一个表单中,要插入多个 Checkbox 值到数据库中:

我的代码:

Array: ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 )

$a = $_POST['id']; // data from form
$query = "INSERT INTO abc(`x`,`y`,`z`) VALUES " . implode (",","(NULL,$a,'1')");

mysqli_query($dbc,$query);

内爆函数似乎有问题。如何使用 implode 连接数组?

// 预期输出

INSERT INTO abc(`x`,`y`,`z`) VALUES (NULL,1,'1'),(NULL,2,'1'),(NULL,3,'1'),(NULL,4,'1'),

表abc的y列需要用$a循环。

【问题讨论】:

implode() 函数将array 作为第二个参数。您可以再次检查您的代码吗? 是否要将$a 值插入列名y 是的,我需要在 y 列中输入 $a 值 【参考方案1】:

如果你想创建一个批次多次插入,首先构建批次,然后内爆这些批次:

$multiple = array_map(function($e) use($dbc) 
    $e = $dbc->real_escape_string($e);
    return "(NULL, $e, '1')";
, $a);
$query = "INSERT INTO abc(`x`,`y`,`z`) VALUES " . implode (',', $multiple);
mysqli_query($dbc,$query);

旁注:不是VALUE,而是VALUES。并记住在标识符上使用正确的引号。它应该是反引号而不是单引号。

INSERT INTO abc('x','y','z') // NOT OK
INSERT INTO abc(`x`,`y`,`z`) // OK

【讨论】:

非常感谢幽灵,您的提要给了我想要的东西。对错误感到抱歉,我是作为参考发布的。我会为其他人编辑它。干杯。 @SaitoGurung 很高兴这有帮助【参考方案2】:

在这里你做内爆连接。

$query = "INSERT INTO abc('x','y','z') VALUE " . "('" . implode("','", $a) . "')";

【讨论】:

【参考方案3】:

您在 implode implode() 中使用了错误的参数并检查您的插入查询,您必须使用 values 而不是 value

$query = "INSERT INTO abc('x','y','z') VALUES (".implode(",",$a).")";

【讨论】:

你应该发布更正而不是重复用户的代码。 其实根据dev.mysql.com/doc/refman/5.7/en/insert.html,可以使用VALUE或者VALUES【参考方案4】:
$a = array(1,2,3,4);
$string = '';
foreach($a as $v)
    $string .= "(NULL, $v, 1),";

$string = substr($string,0,-1);


$query = "INSERT INTO abc('x','y','z') VALUES $string";

【讨论】:

那会给我 VALUE (1,2,3,4)。我期待一个完整的查询,VALUE (NULL, 1, 1),(NULL, 2, 1),(NULL, 3, 1),(NULL, 4, 1) 好的,我明白了。现在编辑我的答案。【参考方案5】:

根据您的问题,这应该是您的代码:

foreach($a as $item)

 $str[] = "(NULL, '$item', 1)";


$query = "INSERT INTO abc(x,y,z) VALUES ".implode(',', $str);

所以,你犯了两个错误:

    VALUE 应该是 VALUES 在错误的地方使用内爆

【讨论】:

以上是关于在MySQL多次插入中将数组值加入字符串的主要内容,如果未能解决你的问题,请参考以下文章

将重音字符 é 插入 Symfony2 中的表单时,如何在 mysql 数据库中将重音字符 é 保存为 é?

如何将键值对象插入redis内部的lua表中

在mysql中将分隔字符串转换为多个值

如何在node.js中将json数组数据插入mysql?

在mysql Sequelize + Nodejs中将数组和对象转换为批量插入

在laravel中将数组值插入数据库