SQL将行从一个表移动到另一个表,具有不匹配的列

I have found plenty of examples on how to insert into using a select then delete however,

I am looking to move data from one table to another and the columns ARE NOT matched for example

table1 (id, location, lat, lon, date_added)

table2 (id, location, lat, lon, date_added, requested)

essentially I would like to insert into table2 a row from table1 and add the $_SESSION['user_name'] to the requested field, and then delete the original row from the first table.

I have tried a few different things

$sql = "START TRANSACTION;
INSERT INTO bia_signs_pending (SELECT * FROM bia_signs WHERE id = ".$_GET['sign_id'].');

DELETE FROM bia_signs WHERE id = '          .$_GET['sign_id'].';
UPDATE bia_signs_pending SET requested='    .$_SESSION['user']['email'].
'WHERE id = '.$_GET['sign_id'].';
COMMIT;';

//this one breaks because the columns do not match

any suggestions?

You can use INSERT with column names

INSERT INTO TABLE2 (id, location, lat, lon, date_added)
SELECT id, location, lat, lon, date_added 
FROM table1 
WHERE ...

and you can add constants into an INSERT

INSERT INTO TABLE2 (id, location, lat, lon, date_added, requested)
SELECT id, location, lat, lon, date_added, 'Jonny'
FROM table1
WHERE ...

Change your INSERT statement, add list of fields you are selecting:

INSERT INTO bia_signs_pending (id, location, lat, lon, date_added)
            SELECT * FROM bia_signs WHERE id = '{$_GET['sign_id']}';

Just change your insert

INSERT INTO bia_signs_pending (SELECT FROM bia_signs WHERE id = ".$_GET['sign_id'].');

to

INSERT INTO bia_signs_pending (id, location, lat, lon, date_added) VALUES (SELECT * FROM bia_signs WHERE id = '".$_GET['sign_id'].');