Я пытаюсь использовать несколько подготовленных операторов в цикле для одного и того же соединения, например:
if (count($deleted) > 0) {
$stmt_stock = $>conn->prepare('INSERT INTO `stock`
. (timestamp, id, qty) VALUES (' . $this->timestamp . ', ?, 0)');
$stmt_stock->bindParam(1, $id);
$stmt_status = $conn->prepare('INSERT INTO `status` '
. '(timestamp, prev_timestamp, id) VALUES ('
. $this->timestamp . ', ?, ?)');
$stmt_status->bindParam(1, $o_ts);
$stmt_status->bindParam(2, $id);
$stmt_list = $conn->prepare('DELETE FROM `display_list` WHERE `id` = ?');
$stmt_list->bindParam(1, $id);
foreach($deleted as $id => $r) { # $r is here values from $deleted
$o_ts = $r[0];
$stmt_stock->execute();
$stmt_status->execute();
$stmt_list->execute();
}
}
В результате выполняется только $stmt_status
.Однако, если я закомментирую $stmt_list->execute();
из цикла foreach
, то оба подготовленных оператора INSERT
будут работать так, как задумано.Почему цикл завершается ошибкой при добавлении подготовленного оператора DELETE
в этот цикл, и как лучше обойти эту проблему?