2012-04-09 2 views
0

как можно вставить запись, если только конкретное значение не существует в полевставить, если значение поля не существует без внимания, уникального

INSERT INTO `users` (fb_id, username) 
    SELECT '.$id_signed_in.', '.$user_signed_in.' FROM `users` 
    WHERE NOT EXISTS (SELECT * FROM `users` 
         WHERE fb_id='.$id_signed_in.') 
    LIMIT 1' 

это не похоже на работу

+1

создать 'индекс UNIQUE' на' fb_id', он будет автоматический предотвратить повторяющиеся записи – diEcho

+0

почему не использовать уникальный или вставить игнорировать? – ajreal

+0

@ajreal это дает мне ошибку при настройке поля 'fb_id' на уникальное. –

ответ

1

Пожалуйста, попробуйте это,

INSERT INTO `users` (fb_id, username) 
SELECT '.$id_signed_in.', '.$user_signed_in.' FROM `users` 
WHERE fb_id NOT IN(SELECT fb_id FROM `users` 
        WHERE fb_id='.$id_signed_in.') 
LIMIT 1' 
+1

не работает –

+0

Я должен был добавить кавычки вокруг $ user_signed_in. теперь он отлично работает. –

0

Простой способ:

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

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

insert ignore into users (fb_id, username) values ('$id_signed_in','$user_signed_in') 

Здесь вы должны установить fb_id как уникальный для предотвращения дублирования записей. Он только вставляет, если fb_id не существует в db.

Другой способ без использования игнорировать, уникальный:

$res = mysql_query("select id from users where fb_id='$id_signed_in'"); 
if(!(mysql_num_rows($res)>0)){ 
    mysql_query("insert into users (fb_id, username) values ('$id_signed_in','$user_signed_in')"); 
} 
Смежные вопросы