Php SQL将具有不匹配列的行从一个表移动到另一个表
我找到了很多关于如何使用先选择后删除插入的示例 我希望将数据从一个表移动到另一个表,但列不匹配 比如说 表1(Php SQL将具有不匹配列的行从一个表移动到另一个表,php,mysql,Php,Mysql,我找到了很多关于如何使用先选择后删除插入的示例 我希望将数据从一个表移动到另一个表,但列不匹配 比如说 表1(id,location,lat,lon,添加日期) 表2(id,location,lat,lon,添加日期,请求) 基本上,我想在表2中插入表1中的一行,并将$\u SESSION['user\u name']添加到请求的字段中,然后从第一个表中删除原始行 我试过几种不同的方法 $sql = "START TRANSACTION; INSERT INTO bia_signs_pendin
id
,location
,lat
,lon
,添加日期
)
表2(id
,location
,lat
,lon
,添加日期
,请求
)
基本上,我想在表2中插入表1中的一行,并将$\u SESSION['user\u name']添加到请求的字段中,然后从第一个表中删除原始行
我试过几种不同的方法
$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;';
//由于列不匹配,此项将中断
有什么建议吗?更改您的INSERT语句,添加您正在选择的字段列表:
INSERT INTO bia_signs_pending (id, location, lat, lon, date_added)
SELECT * FROM bia_signs WHERE id = '{$_GET['sign_id']}';
您可以对列名使用
INSERT
INSERT INTO TABLE2 (id, location, lat, lon, date_added)
SELECT id, location, lat, lon, date_added
FROM table1
WHERE ...
您可以将常量添加到INSERT
INSERT INTO TABLE2 (id, location, lat, lon, date_added, requested)
SELECT id, location, lat, lon, date_added, 'Jonny'
FROM table1
WHERE ...
只需更改插入内容
INSERT INTO bia_signs_pending (SELECT FROM bia_signs WHERE id = ".$_GET['sign_id'].');
到
您应该仔细阅读准备好的查询和sql注入攻击。在这里的示例中,我的表相当简化。但是,我将如何添加附加字段“requested”。我是否需要向事务中添加UPDATE子句,或者是否有更有效的方法将其添加到insert子句中?我尝试了这种方法,但我认为表名必须位于(columnName,colname2…)前面,就像Ian Kenney的Post对不起一样。在复制/粘贴到这里之前,我做了一些编辑,因此我的原稿有*确保关于
“
,在插入的结尾处,您缺少一个
INSERT INTO bia_signs_pending (id, location, lat, lon, date_added) VALUES (SELECT * FROM bia_signs WHERE id = '".$_GET['sign_id'].');