2012-06-18 179 views
0

我有2個具有相同結構的獨立數據庫。我想將選定的一組行從一個表移動到另一個表。我正在使用PDO選擇所有行,然後在一個while循環中,我假設我可以將每行插入到新表中,然後從舊錶中刪除它。PDO將行從一個數據庫移動到另一個數據庫

與普通的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()); 
    } 
+0

'$ array'從哪裏來? – xdazz

回答

0

它可能不起作用,因爲您在準備好的語句中使用了問號佔位符樣式,但正在向execute傳遞一個命名數組。

如果命名參數而不是,它應該工作:

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

你可以這樣做:

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

當然,這兩個數據庫必須是在同一臺機器

+0

這當然假設他們在同一臺服務器上,但如果是這樣,這顯然是最好的解決方案。 – deceze

+0

不同的服務器很不幸 – mauzilla

+0

然後只是看到deceze答案 – dynamic

相關問題