我想从MYSQL数据库中删除多行。我已经创建了这个delete.php文件,以选择各种链接并使用复选框将其删除。
<html> <head> <title>Links Page</title> </head> <body> <h2>Choose and delete selected links.</h2> <?php $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'); $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 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> <?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($sql); } // if successful redirect to delete_multiple.php if($result){ echo "<meta http-equiv=\"refresh\" content=\"0;URL=view_links.php\">"; } } mysqli_close($dbc); ?> </table> </form> </td> </tr> </table> </body> </html>
这似乎没有删除任何行。我的数据填充在表中。我猜问题出在PHP代码上。请帮我在这里。
您应该将其视为这样的数组,
<input name="checkbox[]" type="checkbox" value="<?php echo $row['link_id']; ?>">
只有这样,您才能对其计数并循环删除。
您还需要将数据库连接传递给查询。
$result = mysqli_query($dbc, $sql);
您的没有包括:
$result = mysqli_query($sql);