对于我员工的表,电子邮件是一个唯一字段。当我插入新员工时,我会检查电子邮件是否存在。如果它已经存在,您会收到一条错误消息:
$selectquery ="SELECT * FROM employee WHERE empemail='$empemail'";
$selectresult=mysql_query($selectquery) or die("query fout " . mysql_error() );
if(mysql_num_rows($selectresult)==1)
{
$errormsgnewemployee = '<p id=notification>The email you entered already exists.</p>';
}
但是在UPDATING一个字段的时候怎么办呢?因为如果我更新员工数据(不更改他的邮件),它不会让我,因为电子邮件已经存在。我能想到的就是先更新,然后检查是否有 2 条记录,如果有 2 条,则将其更新回原来的状态。
这是一个好的方法还是有更好的解决方案?
编辑
我自己的解决方案是更新表上有一个唯一索引
并使用查询错误的表:
if (mysql_error())
{
$errormsgnewemployee = '<p id=notification>Update failed. Please check if the email you entered already exists.</p>';
}
因为,如果不是唯一的唯一字段,为什么用户会有错误?在所有其他情况下,更新都会成功。
最佳答案
您可以使用相同的解决方案,您只需要“获取此电子邮件地址,但不是我的”以检查是否有任何其他用户在使用它。
例如。在更新之前,做这样的事情:
SELECT 1 FROM employee WHERE empemail = '$empemail' AND id != '$myid';
应该只返回电子邮件属于其他人的行。
附带说明一下,像这样将变量插入到 SQL 查询中存在潜在的安全问题 - 您不应该这样做。并且 mysql_* 函数已被弃用,应替换为 PDO 或 mysqli 替代品。
关于PHP MYSQL 如何在更新时检查记录是否已经存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13798155/