PHP PDO: несколько подготовленных операторов, использующих одно и то же соединение - PullRequest
2 голосов
/ 03 августа 2011

Я пытаюсь использовать несколько подготовленных операторов в цикле для одного и того же соединения, например:

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 в этот цикл, и как лучше обойти эту проблему?

...