在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 数据库中将重音字符 é 保存为 é?