我想用chekboxes刪除多行。以下是我的代碼PHP用多個複選框刪除SQL行
<?php
$host="localhost"; // Host name
$username="****"; // Mysql username
$password="****"; // Mysql password
$db_name="****"; // Database name
$tbl_name="****"; // Table name
// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
$result = mysql_query("SELECT * FROM members WHERE dealer='Panzer Protection'");
?>
<form name="form1" method="post" action="">
<?php
while($rows=mysql_fetch_array($result)){
?>
<tr>
<td bgcolor="#666666"><input name="checkbox[]" type="checkbox" id="checkbox[]"
value="<? echo $rows['member_id']; ?>"></td>
<td bgcolor="#666666"><? echo $rows['member_id']; ?></td>
<td bgcolor="#666666"><center>
<? echo $rows['member_msisdn']; ?></td>
<td bgcolor="#666666"><center>
<? echo $rows['member_name']; ?></td>
<td bgcolor="#666666"><div align="center"><? echo $rows['dealer']; ?></div>
</td>
<td align="center" bgcolor="#FFFFFF"><a href="control_clientinfo.php?member_id=
<? echo $rows['member_id']; ?>" class="update">Look Up</a></td>
</tr>
<?php
}
?>
<tr>
<td colspan="6" align="center" bgcolor="#FFFFFF"><input name="delete" type="submit"
id="delete" value="Delete"></td>
</tr>
</form> //Forgot form close in past
<?php
// Check if delete button active, start this
if($_POST['delete']){
for($i=0;$i<$count;$i++){
$i = 0;
while(list($key, $val) = each($_POST['checkbox'])) {
$sql = "DELETE FROM $tbl_name WHERE id='$val'";
mysql_query($sql);
$i += mysql_affected_rows();
}
}
// if successful redirect to
if($result){
echo "<meta http-equiv=\"refresh\" content=\"0;URL=control_clientlistdel.php\">";
}
}
mysql_close();
?>
它向我顯示了我打電話的列表,並且我可以在框中打勾。如果我點擊刪除按鈕,它只是刷新屏幕和一個我打勾仍然存在
您的DELETE查詢很容易發生SQL注入。恰當地逃避用戶內容,或者更好地瞭解參數化查詢。請注意,不建議使用mysql_ *'函數(請參閱[red box](http://php.net/mysql_query))。將數據庫字段輸出到HTML標記時使用'htmlspecialchars'來防止XSS。而'bgcolor'和'align'屬性已被棄用。還有'中心'元素。 – 2013-03-24 13:57:18
你的表單關閉了嗎? – itsols 2013-03-24 14:03:02
另外,要捕獲被點擊的按鈕,你應該使用類似$ _POST [「delete」]的東西。不要只使用$ delete。這曾經是舊的PHP 4及更早版本的方法,但不再接受。此外,您應該在打印結果之前檢查刪除。否則,它將打印記錄,然後刪除。是沒有意義的 – itsols 2013-03-24 14:04:43