在 MySQL 多次插入中将数组值连接到字符串中


Joining array values into string in MySQL multiple insert

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

我的代码:

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);

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

预期输出

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

表 abc 的列 y 需要与$a一起循环。

如果要

创建批量多次插入,请先构建批处理,然后内爆这些批处理:

$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

在这里你做内爆连接。

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

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

$query = "INSERT INTO abc('x','y','z') VALUES (".implode(",",$a).")";
$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";

根据你有问题的评论,这应该是你的代码:

foreach($a as $item)
{
 $str[] = "(NULL, '$item', 1)";
}
$query = "INSERT INTO abc(x,y,z) VALUES ".implode(',', $str);

所以,你犯了两个错误:

  1. 应该是值
  2. 在错误的地方使用内爆