我正在尝试将联系人插入数据库,但不想复制已有的联系人。
不确定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;";
答案 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;";