我正在尝试将多选中的数据插入具有多行的数据库中。我曾经设法将它们全部插入一行,每行都有一个逗号,这从数据库的角度来看并不是很好。来自多选的数据作为数组存储在变量中,然后应该使用 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()}因此,在每一行中,第 1 列和第 2 列中的数组应该显示 1 个值,并且总是会有相同的 ID。目前这只会在数据库中插入 1 个值,并且只有 1 行
1 回答
收到一只叮咚
TA贡献1821条经验 获得超4个赞
$_POST['multiselectdata']您可以将其作为数组迭代并为数组中的每个值执行准备好的语句,而不是内爆内容:
$stmt = mysqli_stmt_init($conn);
if(!mysqli_stmt_prepare($stmt, $sql)){
// ....
exit();
}
else {
mysqli_stmt_bind_param($stmt, "ii", $value, $id);
foreach (explode(',', $_POST['multiselectdata']) as $value) {
mysqli_stmt_execute($stmt);
}
}
请注意,调用mysqli_stmt_store_result上的INSERT查询是没有意义的,因为没有结果集。foreach应该从您的代码中删除该行和后面的循环。
- 1 回答
- 0 关注
- 160 浏览
添加回答
举报
0/150
提交
取消