2013-03-22 5 views
1

Я пытаюсь вставить пару значений в таблицу с помощью PHP следующим образом:SQL Insert Если запись существует

$sql = "INSERT INTO table1(Field1, Field2) 
      Values (?, ?) 
      "; 
    $stmt = $db-> prepare($sql); 
    $stmt->execute(array($field1, $field2)); 
    $stmt->closeCursor(); 

поле 1 является первичным ключом.

Однако я хочу только вставить поле 1, если в таблице еще нет экземпляра этой записи для поля1 (например, если уже есть запись в поле1 как «оранжевый», она не должна вставлять еще один «оранжевый», если попросил сделать это).

Я чувствую, что это должно быть довольно прямолинейно, но ничего, что я пытаюсь, похоже, работает.

+0

Так проверьте, если запись существует в первую очередь? – Kermit

+0

@ RS-Я не прошу прокомментировать, так жаль опубликовать это как ответ Хммм, я попробовал, и он только вставил 1 строку, и все было пустым. Вот мой реальный код: INSERT INTO table1 (SKU, Title) \t \t \t SELECT (в) SKU, (в) Название ОТ двойственной \t \t \t ГДЕ НЕ СУЩЕСТВУЕТ (выберите 1 FROM table1 WHERE SKU = @ SKU) \t \t \t «; \t $ STMT = $ db-> подготовить ($ SQL); \t $ stmt-> выполнить (массив ($ SKU, $ ID)); \t $ stmt-> closeCursor(); $ SKU и $ id в $ stmt-> execute - это переменные, создаваемые в цикле foreach. – user2201011

+0

@us er2201011: вы должны добавить тег, в котором указано, с какой RDBMS вы работаете. – jmoreno

ответ

1

Попробуйте

INSERT INTO table1(Field1, Field2) 
SELECT @field1, @field2 from dual 
WHERE not exists (select 1 from table1 where field1 = @field1); 
[email protected], @field2 are your parameter values 
Смежные вопросы