簡體   English   中英

PHP MYSQL UPDATE 如果存在或 INSERT 如果不存在?

[英]PHP MYSQL UPDATE if Exist or INSERT if not?

我不知道這是否正確。 我有一個類,如果字段當前存在,我想更新數據庫,如果不存在則插入。 復雜之處在於我正在加入 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;
}

我相信您正在尋找以下語法:

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

注意:使用ON DUPLICATE KEY UPDATE ,如果將行作為新行插入,則每行的受影響行值為1 ,如果更新現有行,則為2 ,如果將現有行設置為其當前值,則為0

MySQL 文檔: INSERT ... ON DUPLICATE KEY UPDATE Statement

兩種選擇:

MySQL 手冊 :: INSERT INTO ... ON DUPLICATE KEY UPDATE 語法

或者

MySQL 手冊 :: REPLACE INTO 語法

兩者都允許您在一個查詢中執行 insert-if-not-exists-or-update。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM