Hallo,

zoals de tittel beschrijft probeer ik een row te selecteren uit een tabel, deze te wijzigen en terug toe te voegen in de zelfde tabel.

Maar je krijgt al als error: Duplicate entry

Iemand hier ervaring mee ?
De primary key kolom niet meenemen in de INSERT.
UPDATE gebruiken.
Je hebt het over 'toevoegen' (INSERT) terwijl je wilt 'wijzigen' (UPDATE).

UPDATE table_name
SET column1=value, column2=value2,...
WHERE some_column=some_value
En dan kom ik dus op zoiets:

INSERT INTO tabel
(
	kolom1, 
	kolom 2
) 
SELECT 
	kolom1, 
	kolom2 
FROM tabel 
WHERE id = 123456;


En dan selecteer je het ID dus gewoon NIET mee.
- SanThe - op 13/10/2013 12:00:28

UPDATE gebruiken.

Als update lukt dit, maar ik ik wil er een kopij van maken die dan terug bovenaan de lijst word getoond.


Toevoeging op 13/10/2013 12:21:41:

Eddy E op 13/10/2013 11:59:58

Dan is de key (waarschijnlijk een auto-incredement) al in gebruik. En dat mag niet.
Dus óf je KEY wijzigen, óf (en beter) gewoon als gewijzigde op te slaan.

Maar wat wil je nu?
Een rij selecteren, wijzigen en dan als NIEUWE KOPIE opslaan?
Of een rij selecteren, wijzigen en dan opslaan (overschrijven)?

Soortgelijk geval: http://stackoverflow.com/questions/4039748/in-mysql-can-i-copy-one-row-to-insert-into-the-same-table


Ik wil de rij selecteren (gelukt)
dan enkele data inserten (gelukt)
en dan een nieuwe rij opslaan met de extra gegevens (niet gelukt)
in dezelfde tabel.
Nogmaals, als je een nieuwe rij wilt invoegen moet je die niet hetzelfde id meegeven, maar het opnieuw laten genereren.
Ger van Steenderen op 13/10/2013 12:52:57

Nogmaals, als je een nieuwe rij wilt invoegen moet je die niet hetzelfde id meegeven, maar het opnieuw laten genereren.

Met een gewone insert lukt dit dus niet.
<?php
$sql = "INSERT INTO bericht(naam, achternaam) VALUES ('". mysql_real_escape_string ($_POST["naam"]) ."', '". mysql_real_escape_string ($_POST["achternaam"]) ."' )";
?>
Hier herkent hij de post niet.
De selectie komt uit deze:
<?php
$sql = "SELECT * FROM bericht WHERE bevestig ='".$_SESSION['confirmatie']."' LIMIT 1 ";
?>

Reageren