我试图将数据从多选插入到具有多行的数据库中。
我曾经设法将它们全部插入到一行中,每行都带有一个逗号,这从数据库的角度来看并不是很好。 来自multiselect的数据以数组形式存储在变量中,然后应使用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中应显示数组的1个值,而列2中将始终具有相同的ID。当前,这只会在数据库中插入1个值,并且仅插入1行
答案 0 :(得分:2)
您可以将$_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
毫无意义。该行和后面的name
循环应从您的代码中删除。