要在mysql中一次插入多个记录,我想首先将二维数组转换为字符串,然后在php中激活mysql查询以插入所有这些记录,
我有二维数组如下,
Array
(
[0] => Array
(
[0] => Ryan
[1] => 1
[2] => 0
)
[1] => Array
(
[0] => Simon
[1] => 2
[2] => 1
)
.
.
.
)
我想制作一个这样的字符串,
('Ryan', '1', '0'), ('Simon', '2', '1'), .....
我知道如果它是一维的我们可以像"'" . implode("','", $row) . "'"
当然我们可以在foreach循环中使用foreach来完成它。但我想用内爆函数来做。任何的想法 ?
答案 0 :(得分:2)
以下代码可用于解决问题,将2d数组内嵌到字符串
中echo implode(', ', array_map(function ($entry) {
return "(".implode(',',$entry).")";
}, $inputArray));
答案 1 :(得分:1)
我建议使用prepared statement而不是使用implode构建插入查询。
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
$stmt = $mysqli->prepare("INSERT INTO myTable VALUES (?, ?, ?)");
$stmt->bind_param('sii', $row[0], $row[1], $row[2]);
foreach($rows as $row) {
$stmt->execute();
}
答案 2 :(得分:1)
嗯,您只能通过implode()
来电来执行此操作。你必须遍历数组。但是这样的事情对你有用:
<?php
echo $str = "(" . implode("), (", array_map(function($v){
return "'" . implode("','", $v) . "'";
}, $row)) . ")";
?>