我刚刚编写了这段代码并动态分配复选框的名称,并在按下删除按钮时删除选定的复选框。但它不起作用。有人可以帮助我吗?
主.php
$snooverhtml = "select * from songs_list";
$query7 = mysqli_query($con, $snooverhtml);?>
<form method="post" action="delete.php">
<input id="deletebtn" type="submit" name="deletethis" value="Delete"/></br>
<?php while($row = mysqli_fetch_assoc($query7)):?>
<input type="checkbox" name="<?php echo "cb".$row['sno.'];?>"/><?php echo $row['sno.']?> <?php echo $row['songs_name']?></br>
<?php
endwhile;
?>
删除.php
$noofsongs = "select * from songs_list";
$query8 = mysqli_query($con, $noofsongs);
$noio = mysqli_num_rows($query8);
$flag = 0;
if(isset($_POST['deletethis'])){
for($j=0; $j<=$noio ;$j++){
if (isset($_POST['<?php echo"cb".$j;?>'])){
$deletesongsquery = "DELETE FROM `songs_list` WHERE `sno.` = $j" ;
$query4 = mysqli_query($con, $deletesongsquery);
$flag = $flag + 1;
}
}
echo $flag;
}
你已经在PHP中了$_POST['<?php echo"cb".$j;?>']
所以这是不正确的。这是从字面上寻找<?php echo"cb".$j;?>
作为$_POST
的索引,它从未发现如此isset
是错误的。用:
$_POST['cb'.$j']
或在代码用法中:
if (isset($_POST['cb'. $j])){
还应使用参数化查询。 http://php.net/manual/en/mysqli.quickstart.prepared-statements.php
http://php.net/manual/en/security.database.sql-injection.php