我正在尝试为注册表单编写具有以下字段的代码。姓名,电子邮件地址,出生日期,地址等。如果新进入者姓名和电子邮件地址与中 现有的应该要求另一个名字和电子邮件。
我使用了以下代码。
<?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);
}
?>
但它只检查电子邮件重复。如何修改我的代码以检查名称和电子邮件重复?
答案 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查询的情况下执行此操作。
这些字段可以是唯一的;只需添加复杂的唯一键(名称,电子邮件)。
现在,我们有两种变体:
使用INSERT语句添加新记录,您将在复制时收到错误,捕获此错误并询问用户其他名称和电子邮件。
将INSERT语句与IGNORE选项一起使用,它将帮助您避免错误,然后调用mysql_affected_rows()函数来查找受影响的行数;如果为0,则询问用户另一个名称和电子邮件。