0
所以我試圖將選定的行從一個表中移動到另一個不同的數據庫中。 。PDO複製不同服務器中的行一般錯誤
它在理論工作(但如果有人想給任何意見,請做,我是很新的PDO然而,我總是收到「SQLSTATE [HY000]:常規錯誤」。錯誤
有什麼建議?
private function broken() {
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)) {
// Insert in production database:
$sql = "INSERT INTO `ivr_incomplete` (`id`,`sip_id`,`extension`,`caller_id`,`stage`,`status`,`survey_id`,`start`,`answer`,`hangup`,`end`) VALUES (:id, :sip_id, :extension, :caller_id, :stage, :status, :survey_id, :start, :answer, :hangup, :end)";
$query = $this->production->prepare($sql);
$query->execute($row);
// Delete from staging:
$sql = "DELETE FROM `calls` WHERE `id`='".$row['id']."'";
$this->staging->query($sql);
}
}
catch(PDOException $e) {
$this->informer("FATAL", "Unable to process broken IVR surveys. Error: ".$e->getMessage());
}
}
Hi @DaveRandom。問題是我正在使用2個獨立的數據庫連接。這些表不在同一臺服務器上,因此我首先選擇了行,然後將它們傳遞給另一個表 – mauzilla
@MauritzSwanepoel哦,對不起,我完全錯過了。但關於在循環之外調用'prepare()'的觀點仍然存在。它可能會顯着提升性能。說實話,SQLSTATE代碼並沒有那麼有用 - 我們可以用MySQL中的字符串錯誤(由PDO :: errorInfo()'/'PDOStatement :: errorInfo()'返回的數組的元素'2') – DaveRandom
@ MauritzSwanepoel查看上面的編輯 – DaveRandom