简体   繁体   English

将数据从一个 MySQL 表移动到另一个表

[英]Move data from one MySQL table to another

I am trying to move data from one database (registrations) to another when the user clicks a button named delete.当用户单击名为删除的按钮时,我试图将数据从一个数据库(注册)移动到另一个数据库。 (I want to move the data to a table named archived) (我想将数据移动到一个名为 archived 的表中)

Here is what i have tried (found from Google):这是我尝试过的(从谷歌找到的):

 $result=mysql_query("Insert Into archived (select * from registrations WHERE id=$id") ;
 $row = mysql_fetch_array($result);

This doesn't move it... can anyone help?这不会移动它...有人可以帮忙吗?

Firstly you're missing one parenthesis, which you don't have to use in this case at all 首先,你缺少一个括号,在这种情况下根本不需要使用

Change your query string to 将查询字符串更改为

Insert Into archived (select * from registrations WHERE id=$id)
                     ^                                        ^

or to just 或者只是

Insert Into archived select * from registrations WHERE id=$id

Here is SQLFiddle demo 这是SQLFiddle演示

Secondly INSERT doesn't return a resultset so you shouldn't use mysql_fetch_array() . 其次, INSERT不返回结果集,因此不应使用mysql_fetch_array()

Thirdly if your intent was to move not just to copy data then you also need to delete the row that you copied afterwards. 第三,如果您的意图不仅仅是移动复制数据,那么您还需要删除之后复制的行。


Now you can put it all in a stored procedure 现在,您可以将其全部放在存储过程中

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 ;

Sample usage: 样品用法:

CALL move_to_archive(2);

Here is SQLFiddle demo 这是SQLFiddle演示

The query you are attempting just copies the information from one table to the other. 您尝试的查询只是将信息从一个表复制到另一个表。 You then have to delete it from the first table: 然后,您必须从第一个表中删除它:

INSERT INTO archived 
SELECT * FROM registrations WHERE id = $id;

DELETE FROM registrations WHERE id = $id;

We can do it just by using loop.Here is a example: 我们可以通过使用loop来完成它。这是一个例子:

<?php
        if (isset($_POST['move'])) {

            $userid = $_POST["user_id"];
            $sql = " INSERT INTO `teachers_archive` SELECT * FROM `teachers` WHERE user_id='$userid'";

            if ($conn->query($sql) === TRUE) {
                $query = "DELETE FROM `teachers` WHERE user_id='$userid' ";
                if ($conn->query($query) === TRUE) {
                    $message = "Success!";
                    echo "<script type='text/javascript'>alert('$message');</script>";
                    echo"<script>document.location='mt.php';</script>";
                } else {
                    echo "Error: " . $query . "<br>" . $conn->error;
                }
            } else {
                echo "Error: " . $sql . "<br>" . $conn->error;
            }
        }
        ?>

thanks tehsin this work for and saved me to write a lot of where condition in if感谢 tehsin 的这项工作,并让我在 if 中写了很多 where 条件

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM