使用准备好的语句PHP,MYSQL将多个值插入多行

时间:2019-05-06 22:20:35

标签: php mysql mysqli

我试图将数据从多选插入到具有多行的数据库中。

我曾经设法将它们全部插入到一行中,每行都带有一个逗号,这从数据库的角度来看并不是很好。 来自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行

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循环应从您的代码中删除。