Я пытаюсь вставить контакты в базу данных, но не хочу дублировать уже существующий контакт.
Не уверен, что 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;";
Вы можете использовать:
INSERT ... ON DUPLICATE KEY UPDATE
http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html
Возможно, вы хотите сделать «upsert»? Это означает, что вы пытаетесь сделать INSERT, и если запись уже существует, вы вместо этого используете UPDATE.
Для этого сначала используйте SELECT, чтобы увидеть, существует ли запись. Если контакт отсутствует в базе данных, сделайте INSERT. Если контакт уже находится в базе данных, выполните ОБНОВЛЕНИЕ.
Вы можете использовать хранимую процедуру, которая проверяет, существует ли запись прежде, чем сделать вставку. Если запись существует, хранимая процедура выполнит обновление.
Преимущество использования хранимой процедуры вместо выбора, за которым следует обновление, – это только один раз на сервере базы данных, вместо двух.
Другой вариант:
//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;";