75

これが少しでも正しいかどうかはわかりません。フィールドが現在存在する場合はデータベースを更新するか、存在しない場合は挿入するクラスがあります。複雑なのは、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;
}
4

2 に答える 2

34

2 つの選択肢:

MySQL マニュアル :: INSERT INTO ... ON DUPLICATE KEY UPDATE 構文

また

MySQL マニュアル :: REPLACE INTO 構文

どちらも、存在しない場合の挿入または更新を 1 つのクエリで実行できます。

于 2011-07-28T01:28:43.020 に答える