如何在没有显示ID的情况下唯一识别记录?

时间:2011-03-05 04:34:25

标签: php mysql

在我设计的网站中,管理列表页面显示了名称,电子邮件,用户名和状态(无论是活动用户还是非活动用户)等字段。我的数据库有一个名为 admin 的表。这些字段是 iAdminId,vFirstName,vLastName,vEmail,vUserName,vPassword,vFromIP,vFromIP,dLastLogin和eStatus

在等效的PHP页面(管理列表页面)中,我需要添加删除按钮。每行都有复选框。管理员选择的行数将在他/她单击删除按钮后被删除(当然是在确认后)。我的问题是因为我没有在我的列表页面中提到 iAdminId 字段如何唯一地标识每条记录?

我删除的javscript代码是:

function deleteRecord()
{
    var count = getCount();
    if(count == 0)
    {
      alert("Please enter some records for deletion first!!");
    }
    else
    {
      var c = confirm("Do you wish to delete?");
      if(c==true)
      {
        document.frm.mode.value="Delete";
        document.frm.submit();
      }
      else
      {
        alert("You had wrongly selected 'Delete' option!!");
      }
    }

  }

getCount返回所选记录的数量。 PHP代码是

if($mode=="Delete")
{
    for($i=0;$i<count($_POST['ch']);$i++)
    {
      $delete = "DELETE FROM admin WHERE Name = '".$_POST["ch"][$i]."'";
      $result = mysql_query($delete);
    }
}

2 个答案:

答案 0 :(得分:2)

如果电子邮件对每个用户都是唯一的,并且您有检查以确保这种唯一性,那么可以使用它,没有万无一失的方法可以做到这一点。唯一的方法是将id放在列表中。 这是每行的唯一唯一标识符,因为可以重复使用任何列的组合。 另一种选择是跨所提到的两个字段或电子邮件字段中的唯一键创建复合主键。

EG。确保电子邮件是唯一的,或者名字和姓氏的组合是唯一的。

答案 1 :(得分:1)

我会设置复选框的值(有时人们使用元素的名称或ID属性)等于“admin_n”或“user_n”,其中n = id。按下删除后提交表单时,您可以解析该名称以将ID拉出并以此方式处理。

这当然会在源代码中给出用户的ID,但除非你的代码中有疯狂的安全漏洞,否则这不是一个问题。