首页 > 解决方案 > mysqli使用foreach从多个复选框插入数据库

问题描述

所以我试图从我的数据库中获取数据到复选框,这就是我尝试过的:

<?php
$query = "SELECT * FROM siswa WHERE id_tingkatan='$idtingkatan'";
$result = $koneksi->query($query);
while($row=$result->fetch_assoc()){
?>
<input type="checkbox" name="murid[]" value="<?php echo $row['id_siswa']; ? >"><?php echo $row["nama_siswa"]; ?><br><br>
<?php } ?>

并将选中复选框的值保存到数据库中,这是我尝试过的:

if(isset($_POST["submit"]))
{
if(!empty ($_POST['murid']))
  {
    $i= 0;
    foreach($_POST as $murid){  
    $kelas = $_POST['kelas'];
    $murid = $_POST['murid'][$i];
    $query = "INSERT INTO murid (id_kelas, id_siswa) VALUES ('$kelas', '$murid')";
    $q = mysqli_query($koneksi, $query) or die (mysqli_error($koneksi));
    $i++;
    }
    }
    else
    {
    echo "<script type= 'text/javascript'>alert('Pilih minimal 1 siswa');</script>";
    header('Location: ./kelas.php');
    }
  }

当我提交它时,它确实输入到数据库,但有一个额外的行,id_siswa 值为 0

标签: phpmysql

解决方案


该代码为 中的每个值插入一条记录$_POST。但是,$_POST包含发送的所有参数(包括submit),而不仅仅是要插入的复选框数组。$_POST['murid']而是迭代复选框数组。

改变

foreach($_POST as $murid) ...

foreach($_POST['murid'] as $murid) ...

推荐阅读