【发布时间】:2019-09-24 13:20:33
【问题描述】:
我正在尝试将多选中的数据插入到具有多行的数据库中。
我曾经设法将它们全部插入 ONE 行,每行都带有一个逗号,从数据库的角度来看这并不是很好。 来自多选的数据以数组形式存储在变量中,然后应使用 foreach 循环将其填充到数据库中的多行中。
$array = implode((array)$_POST['multiselectdata']);
$sql = "INSERT INTO tbl_example (column1, column2) VALUES (?, ?)";
$stmt = mysqli_stmt_init($conn);
if(!mysqli_stmt_prepare($stmt, $sql)){
....
exit();
}
else {
mysqli_stmt_bind_param($stmt, "ii", $array, $id);
mysqli_stmt_execute($stmt);
$result= mysqli_stmt_store_result($stmt);
mysqli_fetch_all($result,MYSQLI_ASSOC);
foreach($result as $row){
echo $row["column1"];
}
exit()
}
因此,在每一行中,column1 中的数组应该显示 1 个值,column2 中总是会有相同的 id。目前这只向数据库中插入 1 个值并且只有 1 行
【问题讨论】:
-
如果要插入多行,为什么只执行一次该查询?
-
mysqli_stmt_execute($stmt);应该在我的错的 foreach 循环中。尼克在下面完美地回答了这个话题。这可以通过带有数组的 foreach 循环来完成,或者如果值都可用逗号分隔,则可以使用 explode 来完成。