2016-06-28 4 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は役に立たない。 –

+0

例外をスローするには、[here](https://phpdelusions.net/pdo#errors)の説明に従ってPDOを設定してください。また、手動でスキャンを殺すのではなく、例外を再スローする必要があります。 –

+0

ありがとうございます。私は明日朝にそれをやるつもりだ。今夜は、アプリをプロダクションにプッシュしなければならない。素敵な夜をお過ごしください。 – Ben

答えて

0

たぶん私の質問のタイトルは、今私は、エラー源を見つけたことは適切ではありません。しかし、私は自分自身からさまざまなエラーをデバッグする方法について説明する素晴らしいチュートリアルですので、この回答を書き留めています。

PDOエラーが発生した場合は、this linkに従ってください。方法がわかります。 すぐに使用できるソリューションではなく、エラーを解決する方法を提供するための@あなたの常識に感謝します。

関連する問題