rafaeldorazio Postado Dezembro 22, 2013 Denunciar Share Postado Dezembro 22, 2013 (editado) O primeiro insert deu certo. O segundo insert deu erro. O rollback não foi feito, o primeiro insert foi inserido na base. Como eu faço para quando der erro em qualquer insert dar rollback em todos os inserts ? $produto_id = split(";", $_GET["produto_id"]); $produto_quantidade = split(";", $_GET["produto_quantidade"]); $db = new PDO('mysql:host=localhost;port=3306;dbname=namorofalso', 'root', 'Altera1janio1'); try { /* ------------------------------------ LISTA DADOS DOS ITENS DOS PRODUTOS COMPRADOS ------------------------------------------------------- */ $pedido_valor = 0; for($index = 0; $index < count($produto_id); $index++) { $stmt = $db->prepare("SELECT * FROM tb_produto WHERE produto_id=:produto_id"); $stmt->bindValue(':produto_id', $produto_id[$index], PDO::PARAM_INT); $stmt->execute(); $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); $pedido_valor += ($rows[0]["produto_valor"] * $produto_quantidade[$index]); $item = array("produto_id" => $rows[0]["produto_id"], "item_nome" => $rows[0]["produto_nome"], "item_valor" => $rows[0]["produto_valor"]); } /* -------------------------------- CADASTRA O PEDIDO E OS ITENS DOS PEDIDOS COMPRADOS ----------------------------------------------------- */ $db->beginTransaction(); //PEDIDO $db->exec('INSERT INTO tb_pedido(pedido_valor) VALUES('. $pedido_valor .')'); $pedido_id = $db->lastInsertId(); //ITEM DO PEDIDO for($index = 0; $index < count($item); $index++) $db->exec('INSERT INTO tb_pedido_item(pedido_id, item_valor, produto_id) VALUES("$pedido_id", "$item[$index]["item_valor"]", "$item[$index]["produto_id"]")'); $db->commit(); } catch (PDOException $e) { $db->rollBack(); echo $e->getMessage(); } Editado Dezembro 22, 2013 por rafaeldorazio Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
rafaeldorazio
O primeiro insert deu certo.
O segundo insert deu erro.
O rollback não foi feito, o primeiro insert foi inserido na base. Como eu faço para quando der erro em qualquer insert dar rollback em todos os inserts ?
$produto_id = split(";", $_GET["produto_id"]);
Editado por rafaeldorazio$produto_quantidade = split(";", $_GET["produto_quantidade"]);
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.