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

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/6853190/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-26 01:28:20  来源:igfitidea点击:

PHP MYSQL UPDATE if Exist or INSERT if not?

phpmysql

提问by GGcupie

I have no idea if this is even remotely correct. I have a class where I would like to update the database if the fields currently exist or insert if they do not. The complication is that I am doing a joining 3 tables (set_colors, school_art, baseimage)

我不知道这是否甚至是正确的。我有一个类,如果字段当前存在,我想更新数据库,如果不存在则插入。复杂的是我正在加入 3 个表(set_colors、school_art、baseimage)

Any help would be really great.

任何帮助都会很棒。

Here is what I have:

这是我所拥有的:

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

回答by Tash Pemhiwa

I believe you are looking for the following syntax

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

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

回答by Dan Grossman

Two choices:

两种选择:

MySQL Manual :: INSERT INTO ... ON DUPLICATE KEY UPDATE Syntax

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

or

或者

MySQL Manual :: REPLACE INTO Syntax

MySQL 手册 :: REPLACE INTO 语法

Both will allow you to do the insert-if-not-exists-or-update in one query.

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