在 PHP 中使用复选框进行多行删除
提供的代码旨在从 MySQL 数据库表中删除多行。但是,当前的实现遇到了没有删除任何行的问题。要解决此问题,需要对代码进行某些修改。
第一个问题在于如何接收复选框值。您必须将复选框值视为数组,类似于:
<code class="php"><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 // Retrieve data from database and prepare HTML table $dbc = mysqli_connect('localhost', 'root', 'admin', 'sample') or die('Error connecting to MySQL server'); $query = "select * from links ORDER BY link_id"; $result = mysqli_query($dbc, $query) or die('Error querying database'); // Start form and table for displaying links and checkboxes echo '<form name="form1" method="post" action="">'; echo '<table width="400" border="0" cellpadding="3" cellspacing="1" bgcolor="#CCCCCC">'; // Header row echo '<tr>'; echo '<td colspan="4" align="center" bgcolor="#FFFFFF"><strong>Delete multiple links</strong></td>'; echo '</tr>'; echo '<tr>'; echo '<td align="center" bgcolor="#FFFFFF">#</td>'; echo '<td align="center" bgcolor="#FFFFFF"><strong>Link ID</strong></td>'; echo '<td align="center" bgcolor="#FFFFFF"><strong>Link Name</strong></td>'; echo '<td align="center" bgcolor="#FFFFFF"><strong>Link URL</strong></td>'; echo '</tr>'; // Data rows while ($row = mysqli_fetch_array($result)) { echo '<tr>'; echo '<td align="center" bgcolor="#FFFFFF"><input name="checkbox[]" type="checkbox" value="' . $row['link_id'] . '"></td>'; echo '<td bgcolor="#FFFFFF">' . $row['link_id'] . '</td>'; echo '<td bgcolor="#FFFFFF">' . $row['link_name'] . '</td>'; echo '<td bgcolor="#FFFFFF">' . $row['link_url'] . '</td>'; echo '</tr>'; } // Submit button echo '<tr>'; echo '<td colspan="4" align="center" bgcolor="#FFFFFF"><input name="delete" type="submit" value="Delete"></td>'; echo '</tr>'; // Closing tags echo '</table>'; echo '</form>'; // Delete rows if submit button is clicked 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); } // Redirect to a confirmation or success page after deletion if ($result) { echo '<meta http-equiv="refresh" content="0;URL=view_links.php">'; } } mysqli_close($dbc); ?></code>
这些修改应该可以解决问题,并使代码能够使用复选框从 MySQL 表中删除多行.
以上是如何使用 PHP 中的复选框从 MySQL 数据库表中删除多行,以及应该避免哪些常见错误?的详细内容。更多信息请关注PHP中文网其他相关文章!