Ten eerste mis je een haakje, dat je in dit geval helemaal niet hoeft te gebruiken
Wijzig uw zoekopdracht in
Insert Into archived (select * from registrations WHERE id=$id)
^ ^
of om gewoon
Insert Into archived select * from registrations WHERE id=$id
Hier is SQLFiddle demo
Ten tweede INSERT
retourneert geen resultatenset, dus u moet mysql_fetch_array()
niet gebruiken .
Ten derde als het uw bedoeling was om te verhuizen niet alleen om gegevens te kopiëren, moet u ook de rij verwijderen die u daarna hebt gekopieerd.
Nu kunt u alles in een opgeslagen procedure plaatsen
DELIMITER $$
CREATE PROCEDURE move_to_archive(IN _id INT)
BEGIN
START TRANSACTION;
INSERT INTO archived
SELECT *
FROM registrations
WHERE id = _id;
DELETE
FROM registrations
WHERE id = _id;
COMMIT;
END$$
DELIMITER ;
Voorbeeldgebruik:
CALL move_to_archive(2);
Hier is SQLFiddle demo