<?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>
1
A
답변
5
보다는 당신의 삭제 루프의 각 반복에 대한 쿼리를하고, 나는 문자열로까지 모든 인덱스를 구축하고, 다음과 같은 것을 사용합니다 :
DELETE FROM tableName
WHERE id IN (1,2,12,53)
또한 제출 버튼은 $delete
이 아니며 대신 $_POST["delete"]
입니다. 그리고 당신의 연결 :
mysql_connect("$host", "$username", "$password")
당신은 정말 (일반적으로) 문자열과 같은 변수를 사용하지 마땅 -로이 기입해야합니다
mysql_connect($host, $username, $password)
는 또한, 당신이 주위에 몇 가지 더 많은 문제를 가지고 귀하의 논리를 삭제하십시오. 예를 들어, 서버에 등록 된 후에 <input type='submit' name='delete' />
단추가 $_POST["delete"]
으로 알려 졌음을 이미 지적했습니다. 마찬가지로 ID 값이 checkbox[]
인 확인란은 서버에서 간단히 $_POST["checkbox"]
으로 알려져 있습니다.
또한 삭제 논리에 사용 된 변수 $count
은 모든 레코드를 선택하는 이전 쿼리를 기반으로합니다. 삭제할 체크 박스의 수를 반영하지는 않으며 표시되는 레코드의 수를 반영합니다.
for ($i = 0; $i < count($_POST["checkbox"]); $i++)
{
// delete $_POST["checkbox"][$i];
}
을 그리고 다시, 나는 당신이 값의 캐릭터를 구축하고 여러 대신 단일 쿼리를 실행 제안 : 따라서, 귀하의 루프는이를 기반으로해서는 안된다.
1
Working Code .. Consider Point 1 2 and 3
<?php
// Make a MySQL Connection
mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("funconnect") or die(mysql_error());
// Get all the data from the "example" table
$result = mysql_query("SELECT * FROM members")
or die(mysql_error());
$count=mysql_num_rows($result);
echo "<form name='sendmail' method='post' action='memberList.php'><table border='1'>";
echo "<tr> <th>Select</th> <th>Name</th> </tr>";
// keeps getting the next row until there are no more to get
$countSn = 0;
while($row = mysql_fetch_array($result)) {
// Print out the contents of each row into a table
$chkname = "checkbox".$countSn; #Point 1- Create defferent name for checkboxex like checkbox0, checkbox1
echo "<tr><td><input type='checkbox' name=".$chkname." value=".$row['m_id']." /></td>";
echo "</td><td>";
echo $row['m_name'];
echo "</td></tr>";
$countSn++;
}
echo '<tr><td colspan=2><input name="delete" type="submit" id="delete" value="Delete"></td></tr></table></form>';
$delete=$_POST['delete'];
$checkbox=$_POST['checkbox'];
// Check if delete button active, start this
if($delete){
for($i=0;$i<$count;$i++){
$cname = "checkbox".$i;# Point 2- Create check box name like checkbox0, checkbox1
$checkbox=$_POST[$cname]; #Point 3 - Retrieve data against name
echo $i."===".$checkbox."<br />";
//echo $del_id;
//$sql = "DELETE FROM $tbl_name WHERE id='$del_id'";
//$result = mysql_query($sql);
}
// if successful redirect to delete_multiple.php
if($result){
//echo "<meta http-equiv=\"refresh\" content=\"0;URL=delete_multiple.php\">";
}
}
mysql_close();
?>
관련 문제
- 1. PHP의 체크 박스를 사용하여 여러 레코드 삭제
- 2. 중복 기록을 삭제 하시겠습니까?
- 3. 방법하려면 SQL 서버에 하나 개의 테이블에서 8,500,000 기록을 삭제
- 4. SQL : 최신 기록을 가져
- 5. 여러 PHP의 WHILE이 위 내 쿼리입니다
- 6. 확인 창을 삭제 - 삭제하거나 취소를 클릭 할 때 기록을 삭제
- 7. 외래 키가있는 여러 테이블에서 SQL 삭제
- 8. 누가 내 SQL 테이블 행을 삭제 했습니까?
- 9. 삭제 여러 노드
- 10. PHP의 SQL 쿼리
- 11. Zend_Db_Table : 여러 항목 삭제
- 12. Microsoft SQL Server 스케줄 작업 - 기록 삭제 중
- 13. 관련 테이블에서 SQL 삭제
- 14. 아음속 삭제 여러 레코드
- 15. 여러 파일에서 행 삭제
- 16. 여러 테이블에서 삭제 ASP.NET
- 17. 여러 테이블에서 행을 삭제
- 18. 의 PHP의 SQL ADODB는 실행()
- 19. SQL Server에서 안전하게 삭제
- 20. 당일 기록을 가져 오기위한 SQL 쿼리
- 21. 두 테이블에서 여러 레코드 삭제
- 22. 단일 쿼리로 여러 행 삭제
- 23. 삭제 기록을 클릭 할 때 div 태그를 새로 고침
- 24. 분기를 삭제 한 후 svn 분기 기록을 볼 수 있습니까?
- 25. 색인이 생성 된 웹 사이트의 코드 기록을 삭제 하시겠습니까? 가능한?
- 26. SQL Server에서 중복 레코드를 삭제 하시겠습니까?
- 27. GroupBox 내 컨트롤 삭제
- 28. magento 내 계정 삭제
- 29. SQL 삭제 쿼리
- 30. SQL 삭제 고아
{(; $ i가 $ 카운트 <; $ I = 0 $ 난 ++) 용 \t을 ($ _ POST는 [ "삭제"]) 경우에 { \t \t $ del_id = $ 선택란 [$ i]는; \t \t $ sql = "DELETE FROM $ tbl_name 여기서 id = '$ checkbox [$ i]'"; \t \t $ 결과 = mysql_query ($ sql); \t} –
나는 이것을 사용했지만 여전히 삭제하지 않습니다 –
Srikanth, 내 대답은 내 대답을 읽어보십시오. 다른 여러 문제가 있습니다. – Sampson