2013-10-29 136 views
0

我需要腳本從數據庫中刪除註冊用戶。它正在工作,但不是它應該如何。 我的腳本刪除最後一項,而不是我單擊的條目? 這是我列出條目的腳本。如何從數據庫中刪除條目,腳本刪除錯誤條目

<form action="user_delete.php" method="post"> 
<?php 
error_reporting(0); 
$sql="SELECT * FROM users WHERE status='member' ORDER BY id_user"; 
$result = mysql_query($sql) or die(mysql_error()); 
while ($record = mysql_fetch_array($result)) 
{ 

    $id_c=$record['id_user']; 
    $mail=$record['mail']; 
    $_SESSION["del_user"]=$id_c; 


$user = mysql_result(mysql_query("SELECT username FROM users WHERE id_user='$id_c'"), 0); 

echo "Name:&nbsp;&nbsp;<b>$user</b><br />"; 
echo "E-mail korisnika:&nbsp;&nbsp;<b>$mail</b><br />"; 
echo "ID:&nbsp;&nbsp;<b>$id_c</b><br /><br />"; 
echo "<input type=\"submit\" name=\"delete_row\" class=\"btn\" value=\"Delete\" />"; 
echo "<hr />"; 
} 
?> 
</form> 

這是我user_delete.php

<?php 
session_start(); 
include 'function.php'; 
include 'db_config.php'; 
$del=$_SESSION["del_user"]; 

    $sql = "DELETE FROM users WHERE id_user = $del"; 
    mysql_query($sql) or die(mysql_error()); 

    if(mysql_affected_rows()>0) 
    { 
     header("Location:user_management.php"); 
    } 
    else 
    { 
     echo "No"; 
    } 

mysql_close(); 
?> 
+0

通讀您的代碼。您有10個用戶,並輸出10個刪除按鈕,但是您將** LAST **用戶的ID存儲在$ _SESSION中......除了輸出的最後一個用戶之外,您將永遠無法刪除任何內容。您需要在表單中存儲用戶的ID,並將該ID傳回給腳本。 –

+0

好吧,我意識到問題,但如何解決它?要做到這一點沒有while循環? –

+0

基本上:'

回答

-1

通過您的POST變量電子郵件或該表的主鍵。現在你正在使用會話ID進行選擇。它會每次只刪除你的記錄。

$del = $_POST['email']; 
$sql = "DELETE FROM users WHERE id_user = $del"; 
+0

-1鼓勵SQL注入攻擊。 –

+0

所以,你想要他做什麼。將變量放在會話中?這不是一種優雅的方式。這也是一個黑客。 –

+0

建議他使用預處理語句來執行這些查詢。 –

2

在while循環,要覆蓋會話變量del_user

while ($record = mysql_fetch_array($result)) 
{ 

    $id_c=$record['id_user']; 
    $mail=$record['mail']; 
    $_SESSION["del_user"]=$id_c; 

這意味着$_SESSION["del_user"]將永遠是最後一個記錄。

+0

好吧,我明白,但如何解決這個問題?如何選擇和顯示用戶從數據庫不覆蓋ID?或者如何發送rigth id到腳本? –