<?php
$host="localhost"; // Host name
$username="root"; // Mysql username
$password=""; // Mysql password
$db_name="toybox"; // Database name
$tbl_name="Emp"; // 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);
// echo $count;
?>
<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="4" bgcolor="#FFFFFF"><strong>Delete multiple rows in mysql</strong> </td>
</tr>
<tr>
<td align="center" bgcolor="#FFFFFF">#</td>
<td align="center" bgcolor="#FFFFFF"><strong>Id</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Name</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Lastname</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Email</strong></td>
</tr>
<?php
while($rows=mysql_fetch_array($result)){
?>
<tr>
<td align="center" bgcolor="#FFFFFF"><input name="checkbox[]" type="checkbox" id="checkbox[]" value="<? echo $rows['EmpId']; ?>"></td>
<td bgcolor="#FFFFFF"><?php echo $rows['EmpId']; ?></td>
<td bgcolor="#FFFFFF"><?php echo $rows['FirstName']; ?></td>
<td bgcolor="#FFFFFF"><?php echo $rows['LastName']; ?></td>
<td bgcolor="#FFFFFF"><?php echo $rows['Email']; ?></td>
</tr>
<?php
}
?>
<tr>
<td colspan="5" align="center" bgcolor="#FFFFFF"><input name="delete" type="submit" id="delete" value="Delete"></td>
</tr>
<?php
// Check if delete button active, start this
if($delete){
for($i=0;$i<$count;$i++){
$del_id = $checkbox[$i];
$sql = "DELETE FROM $tbl_name WHERE id='$del_id'";
$result = mysql_query($sql);
}
// if successful redirect to delete_multiple.php
if($result){
echo " Record have been deleted";
}
}
mysql_close();
?>
</table>
</form>
</td>
</tr>
</table>
Run Code Online (Sandbox Code Playgroud)
我不是对你的删除循环的每次迭代进行查询,而是将所有索引构建成一个字符串,并使用类似下面的内容:
DELETE FROM tableName
WHERE id IN (1,2,12,53)
Run Code Online (Sandbox Code Playgroud)
此外,您的提交按钮不会通过$delete,而是通过$_POST["delete"].和你的联系:
mysql_connect("$host", "$username", "$password")
Run Code Online (Sandbox Code Playgroud)
你真的不应该像字符串那样使用变量(通常) - 这应该写成:
mysql_connect($host, $username, $password)
Run Code Online (Sandbox Code Playgroud)
此外,你的删除逻辑中还有一些问题.例如,我已经指出,您的<input type='submit' name='delete' />按钮将$_POST["delete"]在服务器上注册后被称为.同样,具有id值的复选框checkbox[]将简单地称为$_POST["checkbox"]服务器上的复选框.
此外,您$count的删除逻辑中使用的变量基于先前的查询,该查询选择了显示它们的所有记录.它不反映要删除的复选框的数量,它反映了显示的记录数.因此,你的for循环不应该基于它:
for ($i = 0; $i < count($_POST["checkbox"]); $i++)
{
// delete $_POST["checkbox"][$i];
}
Run Code Online (Sandbox Code Playgroud)
而且,我建议您构建一个值字符串并运行单个查询而不是多个查询.