2016-06-28 2 views
0

2 일이 지났으므로이 경우 알아낼 수 없습니다.MSSQL 업데이트가 작동하지만 INSERT가 실패합니다.

PHP 5.5 ans MSSQL을 사용하고 있는데,이 테이블에서 업데이트가 작동하고 다른 테이블에서 같은 삽입이 작동하는 반면 일부 테이블에는 삽입 할 수없는 것 같습니다.

물론 내 사용자가이 테이블에 대한 올바른 권한을 갖고 있는지 확인했습니다.

여기

// Establish connection 
try { 
    $pdo = new PDO(DSN, UID, PWD); 
} catch (PDOException $e) { 
    die("Error! ".$e->getMessage()); 
} 

$pdo->beginTransaction(); 

// Merge-like event 
try { 
    $updateStmt->execute(); 
    $rows = $updateStmt->rowCount(); 
    if($rows == 0) { 
     $insertStmt->execute(); 
    } 
} catch (Exception $e) { 
    $pdo->rollBack(); 
    die("Error! ".$e->getMessage()); 
} finally { 
    $insertHistoryStmt->execute(); 
    $pdo->commit(); 
} 

내 모든 PDO 문 객체는 적절한 값으로 보정한다은 ... 나는 바보 야 아마 코드입니다. INSERT에서 오류가 발생하지 않은 것은 DB에서 실행 된 적이없는 것 같습니다.

이해하기 위해 더 많은 코드가 필요한지 물어보십시오. 전체 코드를 여기에 입력하고 "내 작업을 수행하십시오"라고 말하지는 마십시오.

덕분에 나는 정말 붙어있어 :

+2

기본적으로 pdo는 실패시 부울 false를 반환합니다. 명시 적으로 예외를 설정하지 않는 한 초기 연결 시도에서만 예외가 발생합니다. 따라서 try/catch는 쓸모가 없습니다. 거기에서 수행하는 작업 중 아무 것도 예외를 throw하지 않기 때문입니다. –

+0

예외를 발생 시키려면 PDO를 설명한 [여기] (https://phpdelusions.net/pdo#errors)로 구성하면됩니다. 또한 수동으로 script를 죽이는 대신 예외를 다시 throw해야합니다. –

+0

감사합니다. 내일 아침에 앱을 푸시해야한다. 좋은 저녁을 보내십시오. – Ben

답변

0

/어쩌면 내 질문의 제목은 내가 오류 소스를 발견 지금은 적합하지 않습니다. 그러나 나는이 답변을 쓰고 있습니다. 왜냐하면 그것은 우리 자신과 다른 오류를 디버깅하는 방법을 설명하는 위대한 튜토리얼이기 때문입니다.

PDO 오류가 발생하면 this link을 따르고 방법을 찾을 수 있습니다. 솔루션을 사용할 준비가 아니라 오류를 해결하는 방법을 제공하기 위해 @ 귀하의 상식에 감사드립니다.

관련 문제