2016-05-04 3 views
-1

Я использую следующий код для транзакции в php. Но некоторые запросы совершаются, а некоторые не совершаются.PHP mysql транзакция с обработкой ошибок try catch

Мне нужен полный код обработки транзакций mysql php.

try { 
    require_once './DB/dbConnect.php'; 
    $conn->autocommit(FALSE); 
    $sql = "DELETE FROM `grn_items` WHERE grn_no ='" . $Doc . "'"; 
    $result = $conn->query($sql); 

    if (!$result) { 
     $result->free(); 
     return $conn->error; 
     //throw new Exception($conn->error); 
    } 
    $sq3 = "UPDATE `grn` SET `editBy` = '" . $editBy . "' ,grnAmount ='" .    
    $total . "' WHERE grnNo ='" . $Doc . "'"; 
    $result3 = $conn->query($sq3); 

    if (!$result3) { 
     $result3->free(); 
     return $conn->error; 
     //throw new Exception($conn->error); 
    } 
    $conn->commit(); 
    $conn->autocommit(TRUE); 
    $conn->close(); 
    return "success"; 
} catch (Exception $ex) { 
    $conn->rollback(); 
    $conn->autocommit(TRUE); 
    return $ex; 
} 
+1

_I нуждается в полной обработке транзакций mysql php и мне нужен номер лотереи, чтобы я мог выиграть El Gordo, если у вас есть те, которые я переписал для вас ваш код. _Сделает справедливую торговлю для me_ – RiggsFolly

+0

@RiggsFolly Хммм, не знал, что stackoverflow может быть настолько юмористическим иногда. :) – user1735921

+0

Кто на земле Упрощенный вопрос. Пожалуйста, прочитайте http://stackoverflow.com/help/why-vote. Этот вопрос, безусловно, не гарантирует UV – RiggsFolly

ответ

1

Следующая строка

require_once './DB/dbConnect.php'; 

должны быть снаружи попытаться поймать, поэтому он должен быть

require_once './DB/dbConnect.php'; 
try { 

    $conn->autocommit(FALSE); 
    $sql = "DELETE FROM `grn_items` WHERE grn_no ='" . $Doc . "'"; 
    $result = $conn->query($sql); 

    if (!$result) { 
     $result->free(); 
     return $conn->error; 
     //throw new Exception($conn->error); 
    } 
    $sq3 = "UPDATE `grn` SET `editBy` = '" . $editBy . "' ,grnAmount ='" .    
    $total . "' WHERE grnNo ='" . $Doc . "'"; 
    $result3 = $conn->query($sq3); 

    if (!$result3) { 
     $result3->free(); 
     return $conn->error; 
     //throw new Exception($conn->error); 
    } 
    $conn->commit(); 
    $conn->autocommit(TRUE); 
    $conn->close(); 
    return "success"; 
} catch (Exception $ex) { 
    $conn->rollback(); 
    $conn->autocommit(TRUE); 
    return $ex; 
} 

потому что ваша переменная $conn приходит оттуда.

+1

Мне бы очень хотелось знать, почему вы думаете, что это будет иметь значение – RiggsFolly

+0

, потому что $ conn определяется в dbConnect.php, если какое-либо исключение возникает в try, $ conn не будет определено, что приведет к ошибке. – user1735921

+0

Если какое-либо исключение было отправлено в 'dbConnect', тогда код переместился бы прямо к' catch() 'и NO SQL CODE ** или любой другой код будет выполнен вообще ** ___FACEPALM___ – RiggsFolly

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