Update bei einer Auto_increment Spalte

Hallo zusammen,

bei folgendem Code werden Kundendaten in die Datenbank gespeichert. Das klappt auch einwandfrei. Die Spalte id_vn ist Auto_Increment und die Spalte id_betreuer ist der Primärschlüssel.

$insert="INSERT INTO persdaten
(id_vn, id_betreuer, name, vorname, gebdatum, familienstand, beruf, telprivat, telmobil, email, telgesch, arbeitgeber, sozversnr)
VALUES (
NULL,
‚$uid‘,
‚{$_POST[‚nachname_kunde‘]}‘,
‚{$_POST[‚vorname_kunde‘]}‘,
‚{$_POST[‚gebdatum_kunde‘]}‘,
‚{$_POST[‚familienstand_kunde‘]}‘,
‚{$_POST[‚beruf_kunde‘]}‘,
‚{$_POST[‚telpriv_kunde‘]}‘,
‚{$_POST[‚telmobil_kunde‘]}‘,
‚{$_POST[‚email_kunde‘]}‘,
‚{$_POST[‚telgesch_kunde‘]}‘,
‚{$_POST[‚arbeitgeber_kunde‘]}‘,
‚{$_POST[‚sozversnr_kunde‘]}‘)

if ($_POST[„speichern“])
{
#Eingegebene Daten in die DB einspeißen bzw. aktualisieren
$mysqli->query($insert);
#Auto_Increment Wert in Variable speichern, um letzten Datensatz ermitteln zu können
$last_id=$mysqli->insert_id;
#Letzten Datensatz aufrufen
$vn_satz=$mysqli->query(„SELECT * FROM persdaten WHERE id_betreuer = ‚$uid‘ AND id_vn=’$last_id’;“);
$vn_feld=$vn_satz->fetch_array();
}

Nachdem Feldvariable $vn_feld die Kundendaten gespeichert hat, werden diese in Textfelder ausgegeben. Derzeit wird jegliche Änderung in den Textfeldern als neuer Datensatz gespeichert. Ich benötige eine Updatefunktion. Wie muss ich das programmieren?

Ich hatte da schon an ON DUPLICATE KEY UPDATE gedacht. Sieht dann so aus. Klappt aber nicht.

$insert="INSERT INTO persdaten
(id_vn, id_betreuer, name, vorname, gebdatum, familienstand, beruf, telprivat, telmobil, email, telgesch, arbeitgeber, sozversnr)
VALUES (
NULL,
‚$uid‘,
‚{$_POST[‚nachname_kunde‘]}‘,
‚{$_POST[‚vorname_kunde‘]}‘,
‚{$_POST[‚gebdatum_kunde‘]}‘,
‚{$_POST[‚familienstand_kunde‘]}‘,
‚{$_POST[‚beruf_kunde‘]}‘,
‚{$_POST[‚telpriv_kunde‘]}‘,
‚{$_POST[‚telmobil_kunde‘]}‘,
‚{$_POST[‚email_kunde‘]}‘,
‚{$_POST[‚telgesch_kunde‘]}‘,
‚{$_POST[‚arbeitgeber_kunde‘]}‘,
‚{$_POST[‚sozversnr_kunde‘]}‘)

ON DUPLICATE KEY UPDATE id_vn=LAST_INSERT_ID(id_vn),

name=’{$_POST[‚nachname_kunde‘]}’,
vorname=’{$_POST[‚vorname_kunde‘]}’,
gebdatum=’{$_POST[‚gebdatum_kunde‘]}’,
familienstand=’{$_POST[‚familienstand_kunde‘]}’,
beruf=’{$_POST[‚beruf_kunde‘]}’,
telprivat=’{$_POST[‚telpriv_kunde‘]}’,
telmobil=’{$_POST[‚telmobil_kunde‘]}’,
email=’{$_POST[‚email_kunde‘]}’,
telgesch=’{$_POST[‚telgesch_kunde‘]}’,
arbeitgeber=’{$_POST[‚arbeitgeber_kunde‘]}’,
sozversnr=’{$_POST[‚sozversnr_kunde‘]}’";

Es wird dennoch ein neuer Datensatz angelegt.

Gruß

Hallo Alex,

der Update-Syntax wird hier ganz gut beschrieben: http://tut.php-q.net/mysql-update.html

Grob auf dein Beispiel angepasst:
UPDATE
persdaten
SET
spalte1=‚wert1‘,
spalte2=‚wert2‘,

WHERE
id_vn=autoincrementid

Gruss
Stefan

Vielen Dank!
Hatte zwischenzeitlich eine andere Lösung gefunden.

Trotzdem Danke!