PHP MYSQL ОБНОВЛЕНИЕ, если существует, или ВСТАВИТЬ, если нет?

Я понятия не имею, является ли это даже отдаленно правильным. У меня есть класс, где я хотел бы обновить базу данных, если поля в настоящее время существуют, или вставить, если их нет. Сложность в том, что я делаю объединение 3 таблиц (set_colors, school_art, baseimage)

Любая помощь будет очень полезна.

Вот что у меня есть:

public function set_layer_colors($value) {
global $db;

$result_array = mysql_query("
IF EXISTS(SELECT * FROM set_colors WHERE school_art_id = '{$value}')

  UPDATE set_colors (school_art_id, baseimage_id, sub_folder, layer)
    SELECT school_art.id, baseimage.id, baseimage.sub_folder, baseimage.layer
    FROM school_art 
    JOIN baseimage ON baseimage.base_folder = school_art.series_code 
    WHERE baseimage.image_type = 'B' ORDER BY school_art.id 

ELSE

 INSERT INTO set_colors (school_art_id, baseimage_id, sub_folder, layer)
    SELECT school_art.id, baseimage.id, baseimage.sub_folder, baseimage.layer
    FROM school_art 
    JOIN baseimage ON baseimage.base_folder = school_art.series_code 
    WHERE baseimage.image_type = 'B' ORDER BY school_art.id 
    ");

return $result_array;

}

Заранее спасибо.

2 ответа

Решение

Я считаю, что вы ищете следующий синтаксис

INSERT INTO <table> (field1, field2, field3, ...) 
VALUES ('value1', 'value2','value3', ...)
ON DUPLICATE KEY UPDATE
field1='value1', field2='value2', field3='value3', ...

Два варианта:

MySQL Manual:: INSERT INTO... ON DUPLICATE KEY UPDATE Синтаксис

или же

MySQL Manual:: ЗАМЕНИТЕ В Синтаксис

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

Другие вопросы по тегам