[mysql] update bzw. insert

G.P.

Legendäres Mitglied
Hiho,

ich habe folgenden kleinen Befehl.

CODE
mysql_query('UPDATE test SET count=count+1 WHERE data='.$data);



Jetzt kann es aber sein, dass der entsprechende Datensatz noch gar nicht existiert. Wie kann ich es machen, dass bei einem nicht existierenden Datensatz, die Daten angelegt werden.
Ich moechte vorher keine extra SELECT Datenbank abfrage machen.

MfG
GP
 
QUOTE (G.P. @ So 27.05.2007, 16:32)Ich moechte vorher keine extra SELECT Datenbank abfrage machen.

Wenn Du das nicht willst, wie willst Du dann unterscheiden, welcher Befehl ausgeführt werden soll?

Ob Du das innerhalb eines Anweisungsblocks (in Form einer gespeicherten Prozedur - k.A., ob das deine mySql-Version kann) oder mit zwei externen Zugriffen machst, ist nachrangig.

Ansonsten hilft so etwas (MS-SqlServer-Syntax):


QUOTE If (Exists (Select A.id From Tabelle As A Where Kriterium = @info))

Update ...

Else

Insert ...
 
du kannst den returncode abfragen und dann ein insert hinterherschieben,

oder mit "insert ... on duplicate key update" arbeiten, falls der primärschlüssel in $data vorhanden ist.
http://dev.mysql.com/doc/refman/5.1/de/ins...-duplicate.html

....
replace ist in diesem fall wohl nicht so ideal, da dabei zuerst der alte datensatz gelöscht wird und dann ein neuer angelegt wird.
 
Zurück
Oben