Mehrere Datensätze auf einmal ändern
Fragezeichen
- php
Hallo Forum
Ich habe folgendes Problem:
Habe ein Formular gemacht das tabellarisch aufgebaut ist und den Inhalt aus einer mySQL Tabelle holt. Man kann darin gewisse Daten ändern. Ich möchte nun diese Änderungen auf EINMAL wieder in die DB speichern, d.h. der Datensatz 1 soll den z.b. den Wert X aus dem Formular bekommen und der Datensatz 2 den Wert Q, etc.
Wie kriege ich das hin?
Für Euer Feedback, bereits im Voraus besten Dank.
Fragezeichen
Am einfachsten ist es mit action=$PHP_SELF
'conect'
UPDATE tabelle SET name = '$name1', ... WHERE id=$id1
result
UPDATE tabelle SET name = '$name2', ... WHERE id=$id2
result
..........
Hello,
Habe ein Formular gemacht das tabellarisch aufgebaut ist und den Inhalt aus einer mySQL Tabelle holt. Man kann darin gewisse Daten ändern. Ich möchte nun diese Änderungen auf EINMAL wieder in die DB speichern, d.h. der Datensatz 1 soll den z.b. den Wert X aus dem Formular bekommen und der Datensatz 2 den Wert Q, etc.
Wie kriege ich das hin?
Dafür gibt es das REPLACE-Kommando.
Replace into ADRESSE (ID_ADRESSE, VORNAME, NACHNAME )
values(16,'Paul','Pille'),(12,'Rosalie','Rotkäppchen');
Leider sind die Beschreibungen, die ich dazu fand, sehr dürftig.
Was ich bisher aber verifiziert habe ist:
REPLACE arbeitet prinzipiell wie INSERT.
Wenn nun aber ein Wert in der ID_ADRESSE ( PRIMARY UNIQUE KEY) bereits vorhanden ist, wird der vorhandene Datensatz gegen den neuen ausgetauscht.
Nun wäre noch auszuprobieren, wie sich das System verhält, wenn es noch eine weitere UNIQUE KEY Spalte gibt, und man versucht, in diesem Feld eine Doublette einzufügen und die entsprechende ID _nicht_ in der Tabelle vorhanden ist.
Wird dann dieser Datensatz auch ausgetauscht? Das wäre bestimmt nicht erwünscht, wenn eine falsche ID angesprochen wird...
Liebe Grüße aus http://www.braunschweig.de
Tom
Hello,
REPLACE arbeitet prinzipiell wie INSERT.
Wenn nun aber ein Wert in der ID_ADRESSE ( PRIMARY UNIQUE KEY) bereits vorhanden ist, wird der vorhandene Datensatz gegen den neuen ausgetauscht.Nun wäre noch auszuprobieren, wie sich das System verhält, wenn es noch eine weitere UNIQUE KEY Spalte gibt, und man versucht, in diesem Feld eine Doublette einzufügen und die entsprechende ID _nicht_ in der Tabelle vorhanden ist.
Wird dann dieser Datensatz auch ausgetauscht? Das wäre bestimmt nicht erwünscht, wenn eine falsche ID angesprochen wird...
Ergebnis:
Es besteht ein Datensatz mit den Werten
ID_ADRESSE(PK) VORNAME NACHNAME NUMI(UK)
16 Paul Pille 33
12 Rosalie Rotkäppchen
Replace into ADRESSE (ID_ADRESSE, VORNAME, NACHNAME, NUMI )
values(97,'Paul','Panther',33),(12,'Rosalie','Rotkäppchen',52);
ID_ADRESSE(PK) VORNAME NACHNAME NUMI(UK)
12 Rosalie Rotkäppchen 52
97 Paul Panther 33
(PK) = Primary Key
(UK) = Unique Key
Man sieht also, dass der Satz mit der ID 16 mit dem Satz mit der ID 97 überschrieben wurde, da in der Spalte NUMI berteits ein Wert 33 vorhanden war.
REPLACE ist also auf jeden Fall mit Vorsicht zu genießen, wenn man nicht eine Bindung über die IDs herstellen kann. Wie sdhon erwähnt, fand ich bisher keine vernünftigen Beschreibungen dazu.
Wenn die Tabelle nur eine einzige UK-Spalte hat, nämlich den Primary Key, funktioniert es aber bestens.
Liebe Grüße aus http://www.braunschweig.de
Tom
Hallo Tom
Danke für deine wirklich ausführliche Antwort. Wie kriege ich aber nun die neuen Werte in die REPLCAE-Abfrage rein, ohne da irgendwie was von Hand machen zu müssten?
Fragezeichen
Hello,
Hallo Tom
Danke für deine wirklich ausführliche Antwort. Wie kriege ich aber nun die neuen Werte in die REPLCAE-Abfrage rein, ohne da irgendwie was von Hand machen zu müssten?
Da würde ich sowieso nur mit Sessions arbeiten. Dann kann man sich Finktionen für ein "Select * " schreiben, die dei angeforderten DS in der Session speichert und auch wieder vollständig (mit den Änderungen) zurückschreibt.
Liebe Grüße aus http://www.braunschweig.de
Tom
ich habe mir das Buch MySql4 von Markt & Technik besorgt.
Darin ist beschrieben das bei Replace anweisungen alle Zeilen
mit übereinstimmenden Indizes gelöscht werden ehe die neue
Zeile eingefügt wird.
Es kann also sein das aufeinmal mehrere Zeilen fehlen.
REPLACE ist also mit vorsicht zu geniesen.
Lieber etwas mehr schreiben und einige Schleifen.
Dafür sind zum Schluss noch alle Datensätze, mit
dem zu erwünschten Inhalt da.
coste
Hello,
ich habe mir das Buch MySql4 von Markt & Technik besorgt.
Ich habe hier den Kofler und http://dev.mysql.com/doc/mysql/de/index.html und http://www.little-idiot.de/mysql/
Meistens reichen diese Quellen, aber manchmal fehlen mir einfach genügent praktische Beispiele.
Darin ist beschrieben das bei Replace anweisungen alle Zeilen
mit übereinstimmenden Indizes gelöscht werden ehe die neue
Zeile eingefügt wird.
Es kann also sein das aufeinmal mehrere Zeilen fehlen.
Das passiert aber nur, wenn man mehrere Unique Index hat. Bei duplicate ist das nicht gefährlich.
REPLACE ist also mit Vorsicht zu geniesen. (stimmt trotzdem!)
Lieber etwas mehr schreiben und einige Schleifen.
Dafür sind zum Schluss noch alle Datensätze, mit
dem zu erwünschten Inhalt da.
Liebe Grüße aus http://www.braunschweig.de
Tom