如何使用复选框从mysql中删除多行?

Kel*_*Hii -1 php mysql checkbox isset delete-row

我尝试删除"admin"数据库中的数据,但删除按钮不起作用.

这是我的首要任务

<?php
$host="localhost"; // Host name 
$username="root"; // Mysql username 
$password=""; // Mysql password 
$db_name="admin"; // Database name 
$tbl_name="admin"; // Table name 
// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");
$sql="SELECT * FROM $tbl_name";
$result=mysql_query($sql);
$count=mysql_num_rows($result);
?>
Run Code Online (Sandbox Code Playgroud)

这是我的复选框代码

<tbody>
<?php
    while($rows=mysql_fetch_array($result)){
?>
<tr>
<td><?php echo $rows['course_code']; ?></td>
<td><?php echo $rows['course_name']; ?></td>
<td><?php echo $rows['lecture_id']; ?></td>
<td><input name="checkbox[]" type="checkbox"
    id="checkbox[]" value="<?php echo $rows['course_code'];?>"></td>
<td><form>
</form>
</td>
</tr>
<?php
    }
?>
</tbody>
Run Code Online (Sandbox Code Playgroud)

而且,这是我的按钮代码

<input type='button' id="delete" value='Delete' name='delete'>
Run Code Online (Sandbox Code Playgroud)

这是我的php功能代码

<?php
if(isset($_POST['delete'])){
for($i=0;$i<$count;$i++){
$del_id = $checkbox[$i];
$sql = "DELETE FROM $tbl_name WHERE course_code='$del_id'";
$result = mysql_query($sql);
}
if($result){
echo "<meta http-equiv=\"refresh\" content=\"0;URL=delete.php\">";
}
}
mysql_close();
?>
Run Code Online (Sandbox Code Playgroud)

Jan*_*sha 7

包含代码中的所有输入元素<form>:<form> all inputs are here </form>

更新:

<input name = "checkbox[]" type="checkbox"  id="checkbox[]" value="<?php echo     $rows['course_code'];?>">
Run Code Online (Sandbox Code Playgroud)

到(这里的ID无关紧要):

<input name="checkbox[]" type="checkbox"  value="<?php echo $rows['course_code'];?>"/>
Run Code Online (Sandbox Code Playgroud)

和你的按钮代码:

<input type='button' id="delete" value='Delete' name='delete'>
Run Code Online (Sandbox Code Playgroud)

<input type="submit" value="Delete"/>
Run Code Online (Sandbox Code Playgroud)

设置开始<form>标记<form action="delete.php" method="post">

注意:我假设下面的代码在delete.php文件中.如果没有在上面的开始表格标签中用该名称替换"delete.php".

你的delete.php文件:

<?php
$cheks = implode("','", $_POST['checkbox']);
$sql = "delete from $tbl_name where course_code in ('$cheks')";
$result = mysql_query($sql) or die(mysql_error());
mysql_close();
?>
Run Code Online (Sandbox Code Playgroud)

注意: 由于mysql_将来会弃用,更好的是使用mysqli扩展.但在使用之前,您必须在服务器上启用它.mysqli是php的一部分,而较新版本的php有它但没有启用.要启用此功能,请查看php信息页面,并在该页面的"已加载配置文件"行中找到php.ini文件的路径.你可以通过在浏览器中加载php文件看到php信息页面:

<?php
 phpinfo();
?>
Run Code Online (Sandbox Code Playgroud)

在文本编辑器中打开php.ini文件并取消注释或extension=php_mysqli.dll在扩展名列表中添加一行.还搜索"extension_dir"并打开它所说的目录并确保php_mysqli.dll文件存在.(如果不使用Windows操作系统,可能会有.so扩展名)

然后重新启动服务器,你就完成了!

Fred -ii-

将mysqli_与预处理语句一起使用确实是一种更好,更安全的方法.然而,有些人甚至会建议PDO,但即便是PDO也没有mysqli提供的一些功能; 奇怪的是.甚至PDO也需要消毒.许多人认为使用PDO将解决注入问题,这是错误的. - 谢谢弗雷德.