将mysqli中的一行移动到另一个表中

时间:2013-08-21 08:38:48

标签: php mysqli

我有两个表名为Contacts,另一个名为Repairs。

这是维修的内容

id
name
phone
address
budget
due

在联系人中我有以下列

id
name
phone
address

有没有办法同步某些行的2个表?

name
phone
address

我正在寻找一种方法来添加一个移动和valadate的按钮,以确保它尚未在修复中的行上完成

name
phone
address

我不想删除修理中的行

我到目前为止按钮的代码是

<a href="add_to_contacts.php?id#<?php echo$id; ?>Add to Contacts</a>

但我不知道我的add_to_contacts.php

中有什么

我认为它会像

    <?php    
    include 'db_connect.php';

function move_row($id = 0) {
    $query = $this->db->query('select * from repairs where id = ' . $id);
    $row = $query->row_array();
    $this->db->insert('contacts',$name);
}
?>

请不要最后一点代码就是我到目前为止它可能是一百万英里之外,但我只能说我试过了。

这里使用的代码是什么?

更新

这是新代码

<?php    
//include database connection
include 'db_connect.php';



$query = "INSERT INTO contacts (name, phone, address) SELECT name, phone, address FROM repair_jobs
                    where id='".$mysqli->real_escape_string($_REQUEST['id'])."'
                    limit 0,1";

                    ?>

2 个答案:

答案 0 :(得分:2)

这真的应该是一个评论 - 但它有点长。

这个问题存在根本缺陷。

这里房间里的大象是你的数据架构是错误的。您不应该在2个不同的表中保存相同的数据 - 这就是它被称为RELATIONAL数据库的原因。维修表应包含:

id
budget
due
contact_id

其中contact_id是指联系人表格中的记录。

在您的问题中,您没有提供有关如何匹配您要复制到联系人表格中的数据的任何详细信息,以避免创建重复记录。

答案 1 :(得分:1)

您可以使用INSERT ... SELECT Syntax

执行此操作
INSERT INTO contacts (name, phone, address) SELECT name, phone, address FROM repairs WHERE id = $id

像这样:

<?php    
//include database connection
include 'db_connect.php';

$query = "INSERT INTO contacts (name, phone, address) 
          SELECT name, phone, address FROM repair_jobs 
          WHERE id='".$mysqli->real_escape_string($_REQUEST['id'])."' 
          LIMIT 0,1";

$mysqli->query($query);
?>