Zurück   Flashforum > Flash und Server > PHP und MySQL

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 30-06-2010, 09:34   #1 (permalink)
Neuer User
 
Registriert seit: Sep 2006
Beiträge: 620
Update wie Insert bzw Insert an bestimmer Position?

Hallo zusammen.

Ich habe ein langes Query (ca 80 Einträge) und muss jetzt noch eine Updatefunktion für die Daten schreiben. Da dies ziemlich umfangreich wäre mit der Update-Methode wollte ich den Ursprungs-Insert-Query nochmal benutzen.

Ich hatte an sowas in der Art gedacht:
PHP-Code:
INSERT INTO datenbank (ding1ding2VALUES ('$ding1''$ding2'WHERE Id '$id' 
Leider will das nicht so wirklich klappen Gibt es eine Möglichkeit wie ich mein Insert Query zum Updaten eines Eintrags verwenden kann (alle Daten sind bei dem Updatevorgang vorhanden).

MfG Monk
__________________
Flash CS5 / Flex 3 / Flashdevelop / FB 4.6
dr monk ist offline   Mit Zitat antworten
Alt 01-07-2010, 07:15   #2 (permalink)
Neuer User
 
Registriert seit: Sep 2006
Beiträge: 620
Ich habe es auch mit

PHP-Code:
UPDATE datenbank SET (ding1ding2VALUES ('$Ding1''$Ding2'WHERE Id '$Id' 
Das scheint leider auch nicht zu klappen. Aber bevor ich wieder ne Stunde drann sitze den Query umzuschreiben wäre es für mich interessant zu wissen ob ein Update nach dem Schema grundsätzlich nicht geht oder ob ich irgendwo anders den Fehler habe.

MfG Monk
__________________
Flash CS5 / Flex 3 / Flashdevelop / FB 4.6
dr monk ist offline   Mit Zitat antworten
Alt 01-07-2010, 07:38   #3 (permalink)
Neuer User
 
Registriert seit: Sep 2009
Beiträge: 216
Hey,

Update sieht so aus:
PHP-Code:
UPDATE datenbank SET ding1 '$Ding1'ding2 '$ding2' WHERE Id '$Id' 
Und bei Insert gibt es kein WHERE.

Dir bleiben nur 2 Möglichkeiten.
- MySQL :: MySQL 5.1 Reference Manual :: 12.2.7 REPLACE Syntax
- MySQL :: MySQL 5.1 Reference Manual :: 12.2.5.3 INSERT ... ON DUPLICATE KEY UPDATE Syntax

Du muss nur richtig die Unix und Index Keys richtig setzten.

Mit freundlichen Grüßen

Cas
CaselPasel ist offline   Mit Zitat antworten
Alt 01-07-2010, 09:17   #4 (permalink)
Neuer User
 
Registriert seit: Sep 2006
Beiträge: 620
Danke für die Antwort.

Ich glaube, dass das "On Dublicate Key Update" das Richtige ist. Allerding werde ich aus der Beschreibung nicht wirklich schlau.

PHP-Code:
INSERT INTO table (a,b,cVALUES (1,2,3)
  
ON DUPLICATE KEY UPDATE c=c+1
Dort wird davon ausgegangen, dass die Spalte "a" unique ist. Aber was hat es mit dem c=c+1 auf sich? Kann man nicht stattdessen den Wert angeben der in der unique Spalte steht (in meinem Fall würde ich dann id=$id schreiben).

Aber das klappt wohl nicht...

MfG Monk
__________________
Flash CS5 / Flex 3 / Flashdevelop / FB 4.6
dr monk ist offline   Mit Zitat antworten
Alt 01-07-2010, 09:30   #5 (permalink)
Neuer User
 
Registriert seit: Sep 2009
Beiträge: 216
Hey,

es läuft so ab wenn der Unique Key vorhanden ist, dann ändere nur den wert.
In deinem Bsp. Würde man die Spalte C um einen erhöhen quasi ein Counter.
Du muss da die Daten angeben die du dann nur ändern möchtest, wenn der Datensatz schon vorhanden ist. Es ist ja keine Bedingung nach dem UPDATE sondern das update selber.

Beim Replace muss man beachten, das wenn der Eintrag schon vorhanden ist der gelöscht wird und neu eingetragen wird. Das heißt, dass der Primärschlüßel sich verändert. Also bei einer Kundentabelle nicht benutzbar, bzw nicht empfehlenswert.

Ich mache es immer so:
Baue mir ein Array mit key => value zusammen.
Mache einen Select und frage es ab.
Ja vorhanden :
PHP-Code:
$set = array();
foreach ( 
$data as $key => $value ) {
    
$set[] = "`".$key."` = '".mysql_real_escape_string($value)."'"
}

$sql "UPDATE ".$table." SET ".implode(", "$set)." WHERE ID = '".(int)$id."';"
Nein nicht vorhanden:
PHP-Code:
$keys = array();
$values = array();
foreach ( 
$data as $key => $value ) {
    
$keys[] = "`".$key."`"
    
$values[] = "'".mysql_real_escape_string($value)."'"
}

$sql "INSERT ".$table." (".implode(", "$keys).") VALUES (".implode(", "$values).");"
Mit freundlichen Grüßen

Cas
CaselPasel ist offline   Mit Zitat antworten
Alt 01-07-2010, 09:48   #6 (permalink)
Neuer User
 
Registriert seit: Sep 2006
Beiträge: 620
Danke nochmal

Dann werde ich wohl leider nicht um das Umschreiben des Insert-Querys rum kommen.
Wird bei 80+ Einträgen die ich Updaten muss halt ne Menge Copy&Paste. Aber dafür wird es dann (hoffentlich) funktionieren

MfG Monk
__________________
Flash CS5 / Flex 3 / Flashdevelop / FB 4.6
dr monk ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Frage zu mysql "update" und "insert" Funkey PHP und MySQL 14 25-07-2006 21:55
Update oder Insert Problem bohnen PHP und MySQL 5 08-06-2006 19:30
update oder insert bubzilla PHP und MySQL 6 23-09-2005 15:07
string formatierung vor DB Insert/Update atothek PHP und MySQL 2 20-08-2004 11:58
Insert To Nightflyer PHP und MySQL 1 09-07-2003 05:11


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:32 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele