在 PHP 中动态创建复选框的名称


Creating the Name of the checkbox dynamically in PHP

我刚刚编写了这段代码并动态分配复选框的名称,并在按下删除按钮时删除选定的复选框。但它不起作用。有人可以帮助我吗?

主.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.']?> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <?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