Datensatz überschreiben.

peter333

Erfahrenes Mitglied
Hallo,

ich bastel gerade an einer Homepage. Im Adminbereich soll man gewissen Datensätze aus einer gewählten Tabelle bearbeiten können. Wenn ich z.B. nun eine Tabelle habe, mit der ID 23, wie kann ich die dann überschreiben. Eingefügt habe ich es bis lang wie folgt:

$query = "INSERT INTO Releases (Artist, Bild, Link) VALUES ( ";
$query .= " '" . $_REQUEST["form_artist"] . "', ";
$query .= " '" . $_REQUEST["form_bild"] . "', ";
$query .= " '" . $_REQUEST["form_homepage"] . "' ";
$query .= " ) ";

$result = mysql_query($query);

Über eine Hilfestellung würde ich mich sehr freuen.
LG Peter
 
PHP:
$query = "UPDATE Releases SET Artist = '".$_REQUEST["form_artist"]."', Bild = '".$_REQUEST["form_bild"]."', Link = '".$_REQUEST["form_homepage"]."' WHERE ID = 23 LIMIT 1";
mysql_query($query)
 
Alternativ, vor allem wenn Du einen Eintrag ersetzen willst der keine simple numerische ID hat sondern der Index aus verschiedenen Daten zusammengesetzt ist (Beispiel folgt im Anschluss) kannst Du mit REPLACE INTO arbeiten, welches syntaktisch identisch mit INSERT INTO ist.

Ein Beispiel mit einem Index ueber zwei Felder, package und versiontree (echtes Beispiel aus einem meiner Projekte, nur anstelle von Variablen hab ich jetzt mal echte Werte eingesetzt). Beides sind Felder die jeweils eine ID aus einer anderen Tabelle enthalten.
SQL:
replace into `packageversions` (`package`,`versiontree`,`version`) values (17,2,'2.6.26.5')

Ein anderes Beispiel. Hier ist der Index nur auf einem Feld (key).
PHP:
mysql_query("replace into `settings` (`key`,`value`) values ('".escapestring($keys[$x])."','".escapestring($_POST[$keys[$x]])."')",$db);

Schoen an REPLACE INTO ist einfach dass man nicht checken muss ob es einen Eintrag gibt oder nicht. Wenn es einen Eintrag gibt wird er aktualisiert, ansonsten wird er erstellt.

Wer weiss wozu die im Beispiel gezeigte Versionsnummer gehoert darf sich auf eigene Kosten einen Keks kaufen. ;)

Und zum Abschluss noch eine Anmerkung zum 2. Beispiel: escapestring() ist eine eigene Funktion und nicht Teil von PHP.
Nur um Copy'n'Paste-Beschwerden vorzubeugen.
 
Zurück