当用户单击名为删除的按钮时,我试图将数据从一个数据库(注册)移动到另一个数据库. (我想将数据移动到名为archived的表中)
这是我尝试过的(从Google找到):
$result=MysqL_query("Insert Into archived (select * from registrations WHERE id=$id") ;
$row = MysqL_fetch_array($result);
这不会动…任何人都可以帮忙吗?
解决方法:
将查询字符串更改为
Insert Into archived (select * from registrations WHERE id=$id)
^ ^
或只是
Insert Into archived select * from registrations WHERE id=$id
这是SQLFiddle演示
其次,INSERT不返回结果集,因此您不应使用MysqL_fetch_array().
第三,如果您的意图不仅仅是移动数据,那么您还需要删除之后复制的行.
现在,您可以将其全部放入存储过程中
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 ;
用法示例:
CALL move_to_archive(2);
这是SQLFiddle演示