PHP MYSQL更新如果存在或INSERT如果不存在?

GGc*_*pie 65 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;
}
Run Code Online (Sandbox Code Playgroud)

}

提前致谢.

Tas*_*iwa 178

我相信您正在寻找以下语法

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

  • 为了更加正确,您不需要指示主键.因此,如果field1是一个键,那么...... ON DUPLICATE KEY UPDATE field2 ='value2',field3 ='value3',...(从field2开始) (5认同)

Dan*_*man 33

两种选择:

MySQL手册:: INSERT INTO ... ON DUPLICATE KEY UPDATE语法

要么

MySQL手册:: REPLACE INTO语法

两者都允许您在一个查询中执行insert-if-not-exists-or-update.

  • Nooo ...如果我们使用"REPLACE INTO",如果PRIMARY数据存在,则将删除其他FOREIGN KEY相关表的数据. (6认同)