![]() |
Datenbank: MySQL • Zugriff über: PHP
[MySQL] Einfügen wenn nicht vorhanden, sonst überschreiben
Morgen.
Ich weiß grad ned so recht, wie ich das machen soll. Ich will eine Zeile in eine Tabelle einfügen wenn sie noch nicht vorhanden ist, ansonsten soll die Zeile überschrieben werden. Einzeln sähe das so aus: Wenn nicht vorhanden, dann: INSERT INTO tabellenname VALUES (NULL, 'wert1', 'wert2') Wenn vorhanden, dann: UPDATE tabellenname SET wert1='wert1', wert2='wert2' Wie kann ich das am einfachsten hinkriegen? |
Re: [MySQL] Einfügen wenn nicht vorhanden, sonst überschreib
Moin,
umgekehrt: Update ausfuehren, mit ![]() Greetz alcaeus |
Re: [MySQL] Einfügen wenn nicht vorhanden, sonst überschreib
oder du baust Dir eine StoredProcedure.
Dies setzt allerdings eine sehr neue Version des MySQL vorraus. |
Re: [MySQL] Einfügen wenn nicht vorhanden, sonst überschreib
Hat MySQL denn nicht die erweiterte Syntax
SQL-Code:
REPLACE INTO tabelle (...) VALUES(...)
![]() PS: Schade, dass das kein SQL Standard ist, obwohl es ein wirklich sinnvolles Feature ist. |
Re: [MySQL] Einfügen wenn nicht vorhanden, sonst überschreib
Hi
Ich mache immer einen INSERT. Sollte der Fehlschlagen mache ich ein UPDATE. Klappt auch der nicht breche ich ab mit einer Fehlermeldung (lasse mir den letzten Fehler von mysql_errno() geben). |
Re: [MySQL] Einfügen wenn nicht vorhanden, sonst überschreib
Naja, habs jetzt anders gemacht:
Code:
Aber ich glaube, ich schreibs um auf Alcaeus' Code.
if (mysql_fetch_row(mysql_query("SELECT varid FROM vars WHERE varname=$varname"))) {
mysql_query("UPDATE usw."); } else { mysql_query("INSERT INTO usw."); } |
Re: [MySQL] Einfügen wenn nicht vorhanden, sonst überschreib
Problem: mysql_affected_rows scheint 0 zurückzugeben, wenn der Wert nicht geändert wird.
Wenn ich also value='0' im UPDATE drinstehen hab, aber value schon 0 ist, wird 0 zurückgegeben und mein Script inserted die Zeile trotzdem. |
Re: [MySQL] Einfügen wenn nicht vorhanden, sonst überschreib
Zitat:
Greetz alcaeus |
Re: [MySQL] Einfügen wenn nicht vorhanden, sonst überschreib
MySQL 4.1.14 läuft bei mir.
|
Re: [MySQL] Einfügen wenn nicht vorhanden, sonst überschreib
Das ist jetzt ein Beispiel wie ich es manchmal mache: Insert -> Update -> Error
Code:
[edit=alcaeus]delphi- durch code-Tags ersetzt. Mfg, alcaeus[/edit]
#->Query DB, no result
function mysqlqueryonly($squery, $bReturn = FALSE) { if(!mysql_query($squery)) { if($bReturn == FALSE) { $sError = "f_mysqlqueryonly - Failed query! - Errorno.:".mysql_errno()." Error:".mysql_error(); mysql_close(); error_log($sError, 0); die($sError); } else { return FALSE; } } return TRUE; } #<-Query DB, no result $squery = "INSERT INTO users_game(Games_ID, Region_Code, Date, Users) VALUES ($sGameID, 'P', '$sDate', $pvalue)"; if(!mysqlqueryonly($squery, TRUE)) { $squery = "UPDATE users_game SET Users = $pvalue WHERE Games_ID = $sGameID AND Region_Code = 'P' AND Date = '$sDate'"; mysqlqueryonly($squery); } |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:19 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz