mehrere Spalten ändern mit UPDATE
jan
- php
hallo,
hab folgendes problem.
ich möchte mit einer anweisung mehrere spalteninhalte mit einmal ändern.
also $test1_alt soll durch $test1_neu ersetzt werden usw.
leider klappt das immer nur mit einer spalte aber nicht mit mehreren.
muss man die denn nicht mit komma trennen?
aber leider klappts so nicht :-(
kommt auch keine fehlermeldung!
$update = "UPDATE haupt SET B1_CODE='$test1_neu',B2_INST='$test2_neu' WHERE B1_CODE='$test1_alt',B2_INST='$test2_alt' AND (A1_ALL LIKE '$gemeinde_nr%')";
$geaendert = mysql_query($update);
danke für eure tipps
gruß jan
Huhu Jan
[pref:t=78714&m=455333]
Dein erster Thread ist noch in der Hauptdatei, auf Nachfragen und Hinweise dort hast Du aber nicht reagiert.
Warum stellst Du die identische Frage gestern und jetzt heute erneut?
Viele Grüße
lulu
Huhu Jan
Warum stellst Du die identische Frage gestern und jetzt heute erneut?
Ok, das identisch nehme ich nach vollständigem öffnen der Augen zurück ;-)
Trotzdem ist es nicht sinnvoll dafür einen neuen Thread zu eröffnen.
So kann niemand das Problem gut nachvollziehen.
Viele Grüße
lulu
hallo,
na dank deinem tipp hat das ja mit dem
AND (A1_ALL LIKE '$gemeinde_nr%')";
jetzt geklappt!
mein jetztiges problem ist aber ein anderes, wie eben erst beschrieben,
dass ich gern mehrere spalteninhalte aktualisieren möchte.
und da komm ich noch nicht ganz zu recht.
jan
Willst Du erreichen, dass test1_alt durch test1_neu und test2_alt durch test2_neu ersetzt wird, sprich, die beiden Spalten unabhängig voneinander geändert werden, dann musst du auch 2 UPDATES drauf laufen lassen. Wenn du willst, dass test1_neu und test2_neu in den Datensätzen in denen die Felder mit test1_alt UND test2_alt belegt sind, dann reicht eine Query. Ist die Frage was du genau willst, kann ich nicht rauslesen, sorry.
PS: Ich denke es geht hier mehr um ein SQL Problem (falsche Kategorie gewählt)
Gruss
Stefan
es ist so, dass ich beide - also test1_alt UND test2_alt ersetzen will.
nun ist halt mein problem, wie man das in der syntax richtig vereinbart.
hast du n tipp?
danke schonmal
jan
Hi,
dass Du beide ersetzen willst ist mir klar *g*
Die Frage war, ob die Ersetzung unabhängig oder abhängig voneinander laufen soll:
Wann soll zum Beispiel das Feld test1 ersetzt werden?
1. Wenn test1=test1_alt und test2 beliebig oder
2. Wenn test1=test1_alt und test2=test2_alt
Im letzteren Fall würde dann ja auch test2 ersetzt (abhängig voneinander). Der Fall wäre einfacher, der erste Fall MUSS getrennt laufen.
Gruss
Stefan
Moin
dass Du beide ersetzen willst ist mir klar *g*
Die Frage war, ob die Ersetzung unabhängig oder abhängig voneinander laufen soll:Wann soll zum Beispiel das Feld test1 ersetzt werden?
- Wenn test1=test1_alt und test2 beliebig oder
- Wenn test1=test1_alt und test2=test2_alt
Im letzteren Fall würde dann ja auch test2 ersetzt (abhängig voneinander). Der Fall wäre einfacher, der erste Fall MUSS getrennt:
Hm hab ich Dich gerade falsch verstanden?
Du kannst doch or nehmen also so:
Wenn test1=test1_alt oder test2=test2_alt
Viele Grüße TomIRL
Moin
dass Du beide ersetzen willst ist mir klar *g*
Die Frage war, ob die Ersetzung unabhängig oder abhängig voneinander laufen soll:Wann soll zum Beispiel das Feld test1 ersetzt werden?
- Wenn test1=test1_alt und test2 beliebig oder
- Wenn test1=test1_alt und test2=test2_alt
Im letzteren Fall würde dann ja auch test2 ersetzt (abhängig voneinander). Der Fall wäre einfacher, der erste Fall MUSS getrennt:
Hm hab ich Dich gerade falsch verstanden?
Du kannst doch or nehmen also so:
Wenn test1=test1_alt oder test2=test2_altViele Grüße TomIRL
Dann ersetzt Du aber IMMER BEIDE WERTE, wenn feld1=feld1_alt ODER feld2=feld2_alt ist. Ich dachte du willst NUR feld1 ändern, wenn feld1=feld1_alt ist, oder wie nun? ;)
Verstehst Du die Logik der Logischen Operatoren?
Gruss
Stefan
es soll schon der fall 2 sein. es sollte beides abhängig voneinander geschehen...
jan
es soll schon der fall 2 sein. es sollte beides abhängig voneinander geschehen...
Hi Jan,
Könntest Du mal Dein Problem Präzisieren?
Was hast Du getan?
Hast Du die von mir empfohlenen Fehlerroutinen eingebaut und prüfst Du ab welche Fehler kommen?
Hast Du die Dokumentation zu den WHERE Bedingungen gelesen und verstanden?
Was hast Du nicht verstanden?
Welche Bedingungen sollen für Dein Statement erfüllt sein? Formuliere diese Bedingungen mal ausführlich in Deiner Muttersprache, dann ist das umsetzen eigentlich nicht mehr so problematisch.
Viele Grüße TomIRL
also,
$update = "UPDATE haupt SET B1_CODE = '$anbieter_code_neu' WHERE B1_CODE = '$anbieter_code_alt' AND (A1_ALL LIKE '5m')";
mit der obigen syntax erreich ich, dass für alle angebote, die im schlüssel mit 5m beginnen die alten inhalte in der spalte B1_CODE durch neue ersetzt werden.
so wie es hier steht, klappt es auch.
nun will ich aber, dass nicht nur der anbieter-code evtl erneuert werden kann, sondern eben auch der name, der ort usw.
ich hab also n formular, wo die aktuellen (alten) werte aus der DB in die input-felder geschrieben werden.
so, wenn daten aktualisert werden sollen, dann werden die eben in den input-feldern erneuert und dann klickt man auf einen button zum ändern der daten bzw. zum reinschreiben in die DB.
es kann aber sein, dass man z.Bsp. nur die telefonnumer ändert und alles andere bleibt gleich, so dass wen ich auf den button klicke, eben trotzdem alle daten in DB geschrieben werden, aber eben nur die tele.-nr. ist neu und diese wird aktualisiert.
hab also im script zum reinschreiben der daten in die DB alle variableninhalte - einmal neu und einmal alt.
Bsp.:
$anbieter_code_alt = 'ABCDE'
$anbieter_code_neu = 'XYZ'
hoffe, das war verst. genug gruß jan
also,
$update = "UPDATE haupt SET B1_CODE = '$anbieter_code_neu' WHERE B1_CODE = '$anbieter_code_alt' AND (A1_ALL LIKE '5m')";
mit der obigen syntax erreich ich, dass für alle angebote, die im schlüssel mit 5m beginnen die alten inhalte in der spalte B1_CODE durch neue ersetzt werden.
so wie es hier steht, klappt es auch.
nun will ich aber, dass nicht nur der anbieter-code evtl erneuert werden kann, sondern eben auch der name, der ort usw.ich hab also n formular, wo die aktuellen (alten) werte aus der DB in die input-felder geschrieben werden.
so, wenn daten aktualisert werden sollen, dann werden die eben in den input-feldern erneuert und dann klickt man auf einen button zum ändern der daten bzw. zum reinschreiben in die DB.
es kann aber sein, dass man z.Bsp. nur die telefonnumer ändert und alles andere bleibt gleich, so dass wen ich auf den button klicke, eben trotzdem alle daten in DB geschrieben werden, aber eben nur die tele.-nr. ist neu und diese wird aktualisiert.
Dann erneuere doch im Update Statement alle Werte.
Sprich
SET
FELD1=SPALTE1
Feld2= Spalte2
Das Update Statement bezieht sich ohnehin auf den kompletten Datensatz.
Du kannst nätürlich auch in einem komplizierten Abfragessytem die Daten vergleichen und die Querry dynamisch zusammensetzen.
Aber das halte ich für die allermeisten Anwendungen für absolut überflüssig.
TomIRL
ja nun ist mein problem aber, wie ich in der syntax
die verschiedenen änderungen korrekt verknüpfe, ob mit komma oder wie auch immer?
Hi Jan,
UPDATE personen SET
spalten_name1=Wert,
spalten_name3=Wert,
spalten_name2=Wert2
WHERE....
Nachzulesen unter
http://www.mysql.de/doc/de/UPDATE.html
Tutorials liegen Dir nicht so?
Du soltest diese Dinger aber unbedingt lesen bevor Du hier schreibst, sonst kann es sein das jemand Dich mal ganz schnell "bügelt".
:-)
TomIRl
also ganz so ist es ja nun nicht.
auf der tutorial-seite war ich auch schon und hab nachgeschaut.
aber leider klappts so wie da nicht.
hab jetzt meine syntax nochmal so gebaut wie im tutorial.
aber klappts so nicht. :-(
$update = "UPDATE haupt SET B1_CODE = '$anbieter_code_neu',B2_INST = '$b2_inst_neu' WHERE B1_CODE = '$anbieter_code_alt',B2_INST = '$b2_inst_alt' AND (A1_ALL LIKE '$gemeinde_nr%')";
hab also die spalte mit komma getrennt.
hoffentlich bekommen wir beide es heut noch hin :-)
vielelicht haste ja ne idee, woran es hier hakt.
danke schonmal!
jan
$update = "UPDATE haupt SET
B1_CODE = '$anbieter_code_neu',
B2_INST = '$b2_inst_neu'
WHERE
B1_CODE = '$anbieter_code_alt',B2_INST = '$b2_inst_alt' AND
(A1_ALL LIKE '$gemeinde_nr%')";
So nun lasse Dir doch mal die Fehler ausgeben, in welcher Zeile kommt der Fehler?
mysql_querry
und dann dann siehst Du wo dr Fehler liegt...
echo mysql_errno() . ": " . mysql_error() . "\n";
ToMIRL
1064:You have an error in your SQL syntax near ' B2_INST = 'TEST' AND A1_ALL LIKE '5nz%'' at line 5
das ist die fehlermeldung.
schein wohl irgendwie am AND zu liegen oder so?