检查mysql中表单值的重复

时间:2012-01-13 11:29:37

标签: php mysql

我正在尝试为注册表单编写具有以下字段的代码。姓名,电子邮件地址,出生日期,地址等。如果新进入者姓名和电子邮件地址与中 现有的应该要求另一个名字和电子邮件。

我使用了以下代码。

<?php
$sel = "SELECT `varEmail`, `intStudentId`  FROM `tbl_registration` WHERE `varEmail` = '".$emailaddress."' AND `intStudentId` <> '".$Id."' ";
$res = mysql_query($sel);
if(mysql_num_rows($res) >0)
{ ?>
<h3 style="color:#FF0000; text-align:center;">The Email Address and name already exists. Please mention different one.</h3>
<?php
}

else
     {

 $insertstudent="INSERT INTO `tbl_registration` (
`varFname` ,
`varLname` ,
`varAddress` ,
`varGender` ,
`intDOB` ,
`varEmail`
)
VALUES (
'".$fname."',  '".$lname."',  '".$address."',  '".$gender."',  '".$DOB."',  '".$emailaddress."'
);";
$insert_res = mysql_query($insertstudent);
     }

?>

但它只检查电子邮件重复。如何修改我的代码以检查名称和电子邮件重复?

4 个答案:

答案 0 :(得分:1)

应该检查名称字段吗? fname,lname还是两者兼而有之?

代表名字:

$sel = "SELECT `varEmail`, `intStudentId`  FROM `tbl_registration` WHERE (`varEmail` = '".$emailaddress."' OR `varFname` = '".$fname."') AND `intStudentId` <> '".$Id."' ";

表示姓氏:

$sel = "SELECT `varEmail`, `intStudentId`  FROM `tbl_registration` WHERE (`varEmail` = '".$emailaddress."' OR `varLname` = '".$lname."') AND `intStudentId` <> '".$Id."' ";

两者:

$sel = "SELECT `varEmail`, `intStudentId`  FROM `tbl_registration` WHERE (`varEmail` = '".$emailaddress."' OR (`varLname` = '".$lname."' AND `varFname` = '".$fname."')) AND `intStudentId` <> '".$Id."' ";

答案 1 :(得分:1)

第一行:

$sel = "SELECT `varEmail`, `varLname`, `intStudentId` 
        FROM `tbl_registration` 
        WHERE `varEmail` = '".$emailaddress."' 
            AND `varLname` = '".$name."' 
            AND `intStudentId` <> '".$Id."' ";

其中 varLname 是您的名称的数据库字段名称, $ name 是您从表单中获取的值。

答案 2 :(得分:0)

根据您选择的外观我可以看到您检查了电子邮件而不是名称,您需要将其添加到您的查询...

答案 3 :(得分:0)

尝试在没有附加 SELECT查询的情况下执行此操作。

这些字段可以是唯一的;只需添加复杂的唯一键(名称,电子邮件)。

现在,我们有两种变体:

  1. 使用INSERT语句添加新记录,您将在复制时收到错误,捕获此错误并询问用户其他名称和电子邮件。

  2. 将INSERT语句与IGNORE选项一起使用,它将帮助您避免错误,然后调用mysql_affected_rows()函数来查找受影响的行数;如果为0,则询问用户另一个名称和电子邮件。