2013-10-29 140 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到脚本? –