将联系人插入数据库但不想复制已存在的联系人

时间:2011-01-15 20:48:57

标签: php mysql

我正在尝试将联系人插入数据库,但不想复制已有的联系人。

不确定INSERT是否有WHERE CLAUSE。

有什么想法吗?

//Insert INTO contact database
$user_id = userid;
$sql_insert = "INSERT into `jt_members_external_contacts`
                            (`j_user_id`,`contact_email`,`firstname`)
               VALUES       ('$user_id','$email','$name')
               WHERE        j_user_id !=$user_id AND contact_email != $email;";

4 个答案:

答案 0 :(得分:1)

您可以使用:

INSERT ... ON DUPLICATE KEY UPDATE
  

http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

答案 1 :(得分:0)

也许你想做一个“upsert”?这意味着您尝试执行INSERT,如果该记录已存在,则执行UPDATE。

为此,首先使用SELECT查看记录是否已存在。 如果联系人不在数据库中,请执行INSERT。 如果联系人已在数据库中,请执行更新。

答案 2 :(得分:0)

您可以使用存储过程在执行插入之前检查记录是否首先存在。如果记录存在,则存储过程将进行更新。

使用存储过程而不是选择后跟更新的优点是,您只需按一次数据库服务器而不是两次。

答案 3 :(得分:0)

另一种选择是:

//Insert INTO contact database
$user_id = userid;
$sql_insert = "INSERT into `jt_members_external_contacts`
                            (`j_user_id`,`contact_email`,`firstname`)
               SELECT       '$user_id','$email','$name'
                FROM        `jt_members_external_contacts`
               WHERE        j_user_id !=$user_id AND contact_email != $email;";