使用 PHP 删除复选框选择的多行
根据用户选择从数据库中删除多行是 Web 开发中的常见任务。要在 PHP 中使用复选框来完成此操作,必须遵循特定步骤。
代码分析
提供的代码在尝试根据复选框选择删除多行时包含一些错误:
解决方案
要解决这些问题并确保成功删除行,应进行以下调整:
基于数组的复选框名称
复选框输入名称应视为数组,以便于循环删除。这可以通过将 [] 附加到复选框名称来实现:
<code class="html"><input name="checkbox[]" type="checkbox" value="<?php echo $row['link_id']; ?>"></code>
查询中的数据库连接
数据库连接 ($dbc) 应作为使用 mysqli_query 查询的参数:
<code class="php">$result = mysqli_query($dbc, $sql);</code>
示例脚本
下面更正的脚本合并了这些更改并演示了功能:
<code class="php"><?php // Database connection $dbc = mysqli_connect('localhost', 'root', 'admin', 'sample') or die('Error connecting to MySQL server'); // Query to retrieve records $query = "select * from links ORDER BY link_id"; $result = mysqli_query($dbc, $query) or die('Error querying database'); // Count records $count = mysqli_num_rows($result); ?> <table width="400" border="0" cellspacing="1" cellpadding="0"> <tr> <td> <form name="form1" method="post" action=""> <table width="400" border="0" cellpadding="3" cellspacing="1" bgcolor="#CCCCCC"> <tr> <td bgcolor="#FFFFFF"> </td> <td colspan="3" bgcolor="#FFFFFF"> <strong>Delete multiple links</strong> </td> </tr> <tr> <td align="center" bgcolor="#FFFFFF">#</td> <td align="center" bgcolor="#FFFFFF"> <strong>Link ID</strong> </td> <td align="center" bgcolor="#FFFFFF"> <strong>Link Name</strong> </td> <td align="center" bgcolor="#FFFFFF"> <strong>Link URL</strong> </td> </tr> <?php while ($row = mysqli_fetch_array($result)) { ?> <tr> <td align="center" bgcolor="#FFFFFF"> <input name="checkbox[]" type="checkbox" value="<?php echo $row['link_id']; ?>"> </td> <td bgcolor="#FFFFFF"><?php echo $row['link_id']; ?></td> <td bgcolor="#FFFFFF"><?php echo $row['link_name']; ?></td> <td bgcolor="#FFFFFF"><?php echo $row['link_url']; ?></td> </tr> <?php } ?> <tr> <td colspan="4" align="center" bgcolor="#FFFFFF"> <input name="delete" type="submit" value="Delete"> </td> </tr> </table> </form> </td> </tr> </table> <?php // Check if delete button active, start this if (isset($_POST['delete'])) { $checkbox = $_POST['checkbox']; for ($i = 0; $i < count($checkbox); $i++) { $del_id = $checkbox[$i]; $sql = "DELETE FROM links WHERE link_id='$del_id'"; $result = mysqli_query($dbc, $sql); } // If successful, redirect to view_links.php if ($result) { echo '<meta http-equiv="refresh" content="0;URL=view_links.php">'; } } mysqli_close($dbc); ?></code>
通过进行这些更正,脚本将根据用户的复选框选择有效地从指定表中删除多行。
以上是如何在 PHP 中使用复选框正确删除多行?的详细内容。更多信息请关注PHP中文网其他相关文章!