вставлять контакты в базу данных, но не хочет дублировать уже существующий контакт

Я пытаюсь вставить контакты в базу данных, но не хочу дублировать уже существующий контакт.

Не уверен, что 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;"; 

Solutions Collecting From Web of "вставлять контакты в базу данных, но не хочет дублировать уже существующий контакт"

Вы можете использовать:

 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;";