programing

PHP MYSQL UPDATE(존재하는 경우) 또는 INSERT(존재하지 않는 경우)?

goodjava 2022. 10. 23. 21:26

PHP MYSQL UPDATE(존재하는 경우) 또는 INSERT(존재하지 않는 경우)?

나는 이것이 조금이라도 정확한지 모르겠다.현재 필드가 있으면 데이터베이스를 업데이트하고 필드가 없으면 삽입할 클래스가 있습니다.복잡한 것은 3개의 테이블(set_colors, school_art, base image)을 결합하고 있다는 것입니다.

어떤 도움이라도 주시면 정말 감사하겠습니다.

제가 가지고 있는 것은 다음과 같습니다.

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

다음과 같은 구문을 찾고 있다고 생각합니다.

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

주의: 포함ON DUPLICATE KEY UPDATE, 행당 affected-rows 값은 다음과 같습니다.1행을 새 행으로 삽입하면2기존 행이 갱신된 경우0기존 행이 현재 값으로 설정되어 있는 경우.

MySQL 문서:

두 가지 선택지가 있습니다.

MySQL 매뉴얼 :: INSERT IN...중복 키 업데이트 시 구문

또는

MySQL 매뉴얼 :: 구문으로의 치환

둘 다 하나의 쿼리에서 insert-if-not-exists-or-update를 수행할 수 있습니다.

언급URL : https://stackoverflow.com/questions/6853190/php-mysql-update-if-exist-or-insert-if-not