PHP MYSQL UPDATE falls vorhanden oder INSERT falls nicht?

Lesezeit: 2 Minuten

PHP MYSQL UPDATE falls vorhanden oder INSERT falls nicht
GGcupie

Ich habe keine Ahnung, ob das auch nur annähernd richtig ist. Ich habe eine Klasse, in der ich die Datenbank aktualisieren möchte, wenn die Felder derzeit vorhanden sind, oder einfügen, wenn dies nicht der Fall ist. Die Komplikation besteht darin, dass ich 3 Tabellen verbinde (set_colors, school_art, baseimage)

Jede Hilfe wäre wirklich toll.

Hier ist, was ich habe:

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

1644180310 881 PHP MYSQL UPDATE falls vorhanden oder INSERT falls nicht
Tasch Pemhiwa

Ich glaube, Sie suchen nach der folgenden Syntax:

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

Notiz: Mit ON DUPLICATE KEY UPDATE, ist der Wert der betroffenen Zeilen pro Zeile 1 wenn die Reihe ist eingefügt als neue Reihe, 2 wenn eine vorhandene Zeile ist Aktualisiert, und 0 wenn eine vorhandene Zeile ist auf die aktuellen Werte setzen.

MySQL-Dokumentation: INSERT ... ON DUPLICATE KEY UPDATE Statement

  • Um korrekter zu sein, benötigen Sie keine Angabe der Primärschlüssel. Wenn field1 also ein Schlüssel ist, dann …… ON DUPLICATE KEY UPDATE field2=’value2′, field3=’value3′, … (beginnend mit field2)

    – Giacoder

    3. Juli 14 um 8:38 Uhr


  • Denken Sie nur daran, der Zielspalte die UNIQUE-Einschränkung zu geben

    – Robert Sinclair

    13. Mai 18 um 0:43 Uhr


  • @StefanoZanetti, Ihre Feldnamen stimmen nicht überein: psw vs password. Weiterhin haben Sie die nicht angegeben role Feld in der ON DUPLICATE KEY UPDATE-Klausel (ich bin mir nicht sicher, ob das wichtig ist).

    – Tash Pemhiwa

    3. April 19 um 10:55 Uhr

1644180311 993 PHP MYSQL UPDATE falls vorhanden oder INSERT falls nicht
Dan Grossmann

Zwei Möglichkeiten:

MySQL-Handbuch :: INSERT INTO … ON DUPLICATE KEY UPDATE Syntax

oder

MySQL-Handbuch :: REPLACE INTO-Syntax

Beide ermöglichen es Ihnen, das Einfügen-wenn-nicht-existiert-oder-aktualisieren in einer Abfrage durchzuführen.

  • Danke, REPLACE INTO ist für meinen Fall viel besser, sonst müsste ich “$query->send_long_data(1, $buff)” zweimal aufrufen, einmal für das INSERT und einmal für das UPDATE

    – Marco

    15. Januar 15 um 14:05 Uhr

  • Nooo … Wenn wir “REPLACE INTO” verwenden, werden die Daten der anderen FOREIGN KEY-bezogenen Tabelle gelöscht, wenn die PRIMARY-Daten vorhanden sind.

    – Angga Lisdiyanto

    02.04.16 um 08:04 Uhr


  • Heads-up über REPLACE — es löscht implizit den Eintrag, den es zu aktualisieren versucht, und fügt einen neuen hinzu, also wenn Sie einen haben AUTO_INCREMENT Schlüssel, wie z ID, es wird auch automatisch inkrementiert!

    – c00000fd

    3. Januar 20 um 7:24 Uhr


.

801790cookie-checkPHP MYSQL UPDATE falls vorhanden oder INSERT falls nicht?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy