在一个表单中,多个复选框值要插入到数据库中:
我的代码:
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);
所以,你犯了两个错误:
- 值
- 应该是值
- 在错误的地方使用内爆