0

同じ構造の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());
    }
4

3 に答える 3

4

あなたはしばらくせずにそれを行うことができます:

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

もちろん、両方のデータベースが同じマシン上にある必要があります

于 2012-06-18T09:37:35.440 に答える
0

準備されたステートメントで疑問符のプレースホルダー スタイルを使用しているが、名前付き配列を に渡しているため、機能しない可能性がありますexecute

代わりにパラメーターに名前を付けると、機能するはずです。

$sql = "INSERT INTO `table` (`field1`,`field2`) VALUES (:field1, :field2)";
于 2012-06-18T09:38:35.020 に答える
0

もう 1 つのアプローチは、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

于 2012-06-18T09:40:47.773 に答える