PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : MySQL Insert problem



StephenKing
26.07.2008, 21:42
Hallo,

Ich habe ein kleines problem.

Nach absenden eines formulars wird folgender befehl ausgeführt:


mysql_query("INSERT INTO at_gekauft(kid, aid, anteile, aktiv) VALUES('$klamm', '$id', '$menge', '0')");

da dies die Datenbank schnell füllt, würde ich es gerne so haben,
das vor dem befehl abgefragt wird ob es schon einen eintrag gib.
es soll geprüft werden, ob die übergebene kid schon einen eintrag
mit der übergebenen aid hat.

falls nun ein eintrag gefunden wurde soll nur ein UPDATE gemacht werden.

Hoffe das ich mich verständlich ausgedrückt habe.



mfg

Lokutos
26.07.2008, 21:52
so ??


db_query ('UPDATE at_gekauft(kid, aid, anteile, aktiv) VALUES('$klamm', '$id', '$menge', '0')" WHERE uid = '.$_POST['uid']);

StephenKing
26.07.2008, 21:56
hi,

der update befehl ist klar :biggrin1:

Mir geht es um die vorherige abfrage ob ein passender eintrag vorhanden ist.



mfg

DimpleX
26.07.2008, 23:29
sorry wenn ich es nur kurz beschreibe


db=daten

if daten vorhanden= sql update
else sql_insert


also ne ganzeinfache if schleife dafür


DimpleX

Sebmaster
26.07.2008, 23:33
sorry wenn ich es nur kurz beschreibe


db=daten

if daten vorhanden= sql update
else sql_insert


also ne ganzeinfache if schleife dafür


DimpleX

jetzt nur noch in code:



db_query('UPDATE.... ['usw']');
if (mysql_affected_rows() == 0) {
db_query('INSERT....');
}

EDIT: gremlins lösung ist besser... allerdings ginge dann auch schon der replace befehL :D

Gremlin
26.07.2008, 23:34
Hi,
du kannst auch einen PRIMARY KEY oder UNIQUE INDEX auf das Feld / die Felder legen welche einmalig sein sollen und dann mit ON DUPLICATE KEY arbeiten.

Wenn z.B. das Feld kid einen PRIMARY KEY hat und somit nur 1x vorhanden sein kann sähe das so aus:


mysql_query("INSERT INTO at_gekauft(kid, aid, anteile, aktiv) VALUES('$klamm', '$id', '$menge', '0')
ON DUPLICATE KEY UPDATE anteile=anteile+$menge");

Bei dem Update kannste natürlich dann auch noch mehrere Felder per Komme trennen wie bei jedem normalen Update auch. Es ist ungetestet aber so in der Art sollte es funktionieren, ansonsten mal kurz bei im Mysql Manual lesen.

DimpleX
26.07.2008, 23:36
war ja klar @Gremlin du must es immer perfektionieren


DimpleX

StephenKing
27.07.2008, 11:55
Wenn z.B. das Feld kid einen PRIMARY KEY hat und somit nur 1x vorhanden sein kann sähe das so aus:



hi,

Leider ist in der tabelle kein feld welches nur 1x vorhanden sein darf.


mfg

Gremlin
27.07.2008, 12:54
Mehrere Felder gehen auch z.B. kid/aid einfach UNIQUE INDEX oder PRIMARY KEY drauf und es geht.

StephenKing
27.07.2008, 13:17
hi,

wenn ich beide felder jetzt setze wie ,uss der der dann aussehen?
es muss imme kid und aid zusammenpassen.


mfg

Sebmaster
27.07.2008, 13:23
hi,

wenn ich beide felder jetzt setze wie ,uss der der dann aussehen?
es muss imme kid und aid zusammenpassen.


mfg

genau der selbe ;)

StephenKing
07.08.2008, 19:27
hi,

thx hier kann dann zu.


mfg

jpwfour
07.08.2008, 19:33
auf wunsch der erstellers:

:closed: