为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
慕丝7291255 2021-06-02 13:08:15
我正在尝试将多选中的数据插入具有多行的数据库中。我曾经设法将它们全部插入一行,每行都有一个逗号,这从数据库的角度来看并不是很好。来自多选的数据作为数组存储在变量中,然后应该使用 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应该从您的代码中删除该行和后面的循环。


查看完整回答
反对 回复 2021-06-04
  • 1 回答
  • 0 关注
  • 160 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信