使用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中文網其他相關文章!