用于插入记录的MySQL条件(如果不存在)

时间:2014-01-24 10:31:39

标签: php mysql

我正在努力让工作变得更轻松。这是一个发现数据库中的记录,如果没有,则创建它。

这是我的命令MySQL:

IF NOT EXISTS( SELECT * FROM USERS
               WHERE
                     name = '$this->m_name'
                 AND email = '$this->m_email'
             ) 
  BEGIN
     INSERT INTO `USERS` (`id`, `name`, `email`, `phone`, `text`, `type`)
     VALUES (NULL, '$this->m_name', '$this->m_email', '$this->m_phone', '', '');
  END

由于我不知道的原因,它没有用。

1 个答案:

答案 0 :(得分:1)

就个人而言,我会考虑寻找解决此问题的另一种方法。

有人指出:如果2个人有相同的名字,这是可能的,那么你就会遇到问题。

但是,如果UNIQUE KEYname值都有phone,则MySQL本身将拒绝插入行,因此您不必这样做。

ALTER TABLE `USERS` ADD UNIQUE (`name`,`phone`);

然后,如果内存正确地为我服务,重复行的MySQL错误号(它应该显示的错误)是1022.这意味着处理输出的代码应该类似于;

$sql = mysql_query("INSERT INTO `USERS` (`id`, `name`, `email`, `phone`, `text`, `type`)VALUES (NULL, '$this->m_name', '$this->m_email', '$this->m_phone', '', '')");
if (mysql_errno() == 1022)
{
    echo 'It would appear that you already have an account with us. If you can not access your account, please reset lost password (link here)';
}

希望有所帮助。