GELÖST - Datensatz kopieren (klonen) - id ändern

Schon festgestellt? Dem Forum sind gerade alle Interaktionsmöglichkeiten genommen. :(

Mehr dazu unter: Abstimmung über das Forum

  • Guten Tag


    Langes Suchen hat mir nicht geholfen - ist aber auch ein seltenes Thema.
    Ich möchte einen bestehenden Datensatz auslesen, mutieren und (nicht wieder speichern wie beim Update), sondern kopieren, d.h. als neuen Datensatz speichern.

    Beim speichern von einem mutierten Datensatz lautet der Code: $stmt->execute([$id, $name, $email, $phone, $title, $created, $_GET['id']]);


    Will ich den kopierten Datensatz neu speichern, muss ich die id auf null und/oder auto increment setzen, aber wie mache ich das? (der erste oder zweite id-Ausdruck, oder beide?)?

  • Habe bei meinem Code etwa eine Stunde geübt (mit id weglassen), kommt nicht zum Ziel.
    Somit erlaube ich mir den ganzen Code reinzustellen.

    Bestehender Code: Mutiert einen Eintrag - was genau muss ich ändern, damit ich den mutierten Eintrag als neuen Datensatz speichern kann?


  • Danke, habe ich vor lauter studieren wie ich die id richtig definiere, vergessen das INSERT einzusetzen.


    Nun, es ist mir gelungen, einen Datensatz zu klonen (nur einmal), aber jetzt kommt die Fehlermeldung sinngemäss: Doppelter Eintrag.


    Wahrscheinlich muss ich in der zweiten Zeile unten die Variable $id anders definieren, aber wie? Nur wegnehmen, ergibt auch einen Fehler.


    Fatal error: Uncaught PDOException: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '566' for key 'PRIMARY' in /home/httpd/vhosts/ms.ch/m-schmid.ch/dv/adr/adr_kop.php:20
    Stack trace:
    #0 /home/httpd/vhosts/ms.ch/m-schmid.ch/dv/adr/adr_kop.php(20): PDOStatement->execute(Array)
    #1 {main} thrown in /home/httpd/vhosts/ms.ch/m-schmid.ch/dv/adr/adr_kop.php on line 20

    Code
    1. $stmt = $pdo->prepare('INSERT INTO contacts VALUES (?,?,?,?,?,?)');
    2. $stmt->execute([$id, $name, $email, $phone, $title, $created]);
  • Ist natürlich die elegantere Lösung!


    Möchte ich zum Beispiel die Variable $phone ansprechen, gehe ich davon aus, dann müsste ich wahrscheinlich (statt in der Zeile 2 direkt zu ändern), $phone = "irgendetwas" zwischen die Zeilen setzen?