PDO将行从一个数据库移动到另一个数据库

时间:2012-06-18 09:33:09

标签: php mysql pdo prepared-statement

我有2个具有相同结构的独立数据库。我想将一组选定的行从一个表移动到另一个表。我正在使用PDO选择所有行,然后在while循环中我假设我可以将每一行插入新表中,然后从旧表中删除它。

使用普通的mysql这是一个非常简单的任务,但我想使用命名空间,以便我可以轻松修改表结构等。我有以下工作,但它不会将条目移动到新表:

 try {
        $sql = "SELECT * FROM `calls` WHERE `calls`.`status`=0 AND `calls`.`stage` < 4 AND `calls`.`answer` < (NOW() - INTERVAL 10 MINUTE)";
        $query = $this->staging->query($sql);
        while($row = $query->fetch(PDO::FETCH_ASSOC)) {
            $sql = "INSERT INTO `table` (`field1`,`field2`) VALUES (?,?)";
            $query = $this->production->prepare($sql);
            $query->execute($array);
        }
    }
    catch(PDOException $e) {
        $this->informer("FATAL", "Unable to process broken IVR surveys. Error: ".$e->getMessage());
    }

3 个答案:

答案 0 :(得分:4)

你可以毫不费力地做到这一点:

INSERT INTO db1.table (fields) SELECT fields FROM db2.table

当然两个数据库必须在同一台机器上

答案 1 :(得分:0)

它可能不起作用,因为您在预准备语句中使用问号占位符样式,但是将命名数组传递给execute

如果您为参数命名,则应该起作用:

$sql = "INSERT INTO `table` (`field1`,`field2`) VALUES (:field1, :field2)";

答案 2 :(得分:0)

另一种方法是在MySQL中使用联合表来执行您尝试执行的操作。有一些限制....但这里有文件让你去...

http://dev.mysql.com/doc/refman/5.0/en/federated-use.html http://dev.mysql.com/doc/refman/5.0/en/federated-limitations.html

相关问题