2015-11-06 5 views
0

я хочу, чтобы отменить два запроса, если есть сбой в одном из двух, мои тестов, которые выполняют первый Requette хотя второго мелиДва запросов в одной транзакции с откатом

public function testCommit(){ 

     $host = "localhost"; 
     $db = "agm_gs"; 
     $user = "root"; 
     $password = ""; 
     $conn; 
     $conn = new mysqli($host, $user, $password, $db); 

     $sql1 = 'INSERT INTO livreur (id_livreur, code_livreur, nom_livreur, pre_livreur) VALUES (NULL, \'L001\', \'nom1\', \'pre1\')'; 
     $sql2 = 'INSERT INTO otherTable XXXXXXXXXXincorrect queryXXXXXXXX'; 

     try 
     { 
      $conn->begin_transaction(); 
      $conn->autocommit(FALSE); 

      $conn->query($sql1); 
      $conn->query($sql2); 

      $conn->commit(); 
      echo 'Sucess transaction'; 
     } 
     catch(PDOException $e) 
     { 
      $conn->rollback(); 
      echo ' Error transaction <br />' . $e->getMessage(); 
     } 
} 

и этот мой результат вставки

enter image description here

ответ

1

Попробуйте это: -

$sql1 = 'INSERT INTO livreur 
id_livreur, code_livreur, nom_livreur, pre_livreur) 
VALUES (NULL, \'L001\', \'nom1\', \'pre1\'), 
(NULL, \'L002\', \'nom2\', \'pre2\')'; 

Операторы INSERT, использующие синтаксис VALUES, могут вставлять несколько строк. К выполните это, включите несколько списков значений столбцов, каждый из которых заключен в круглые скобки и разделен запятыми.

+0

я уже испытал это .... но проблема, если оба requettes на двух разных таблиц для Exemple $ SQL1 = 'INSERT INTO livreur (id_livreur, code_livreur, nom_livreur, pre_livreur) VALUES (NULL, \' L001 \» , \ 'nom1 \', \ 'pre1 \') '; и $ sql2 = 'INSERT INTO otherTable (id_livreur, code_livreur, nom_livreur, pre_livreur) VALUES (NULL, \' L002 \ ', \' nom2 \ ', \' pre2 \ ')'; – isom

+0

использовать 2 разных запроса на вставку в этом случае @isom –

+0

да я использовал 2 варианта запроса на вставку, но я хочу отменить самый первый, если второй неудачный – isom

 Смежные вопросы

  • Нет связанных вопросов^_^