猿问

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

我正在尝试将多选中的数据插入具有多行的数据库中。


我曾经设法将它们全部插入一行,每行都有一个逗号,这从数据库的角度来看并不是很好。来自多选的数据作为数组存储在变量中,然后应该使用 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 行


慕丝7291255
浏览 161回答 1
1回答

收到一只叮咚

$_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应该从您的代码中删除该行和后面的循环。
随时随地看视频慕课网APP
我要回答