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

时间:2015-03-09 07:47:33

标签: php html mysql arrays

在表单中,要插入数据库的多个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循环。

5 个答案:

答案 0 :(得分:3)

如果要创建批量多次插入,首先先构建批次,然后内嵌这些批次:

$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

答案 1 :(得分:0)

$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";

答案 2 :(得分:0)

这里你破坏了concate。

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

答案 3 :(得分:0)

您在内幕implode()中使用了错误的参数并检查了您的插入查询,您必须使用values代替value

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

答案 4 :(得分:0)

根据您的评论,这应该是您的代码:

foreach($a as $item)
{
 $str[] = "(NULL, '$item', 1)";
}

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

所以,你犯了两个错误:

  1. VALUE应为VALUES
  2. 在错误的地方使用内爆