2016-06-28 91 views
0

我已經2天以上,並無法弄清楚這種情況。MSSQL更新工作,但插入失敗

我正在使用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沒有錯誤,似乎從未在數據庫上執行過。

請問你是否需要更多的代碼來理解我不想把我的整個代碼放在這裏,並說「請做我的工作」。

感謝我真的很堅持:/

+2

pdo默認爲在失敗時返回布爾值false。除非你明確地啓用異常,否則它唯一會拋出的是初始連接嘗試。因此你的try/catch沒用,因爲你在那裏做的所有操作都不會拋出異常。 –

+0

只需按照[此處](https://phpdelusions.net/pdo#errors)中的說明配置PDO,以使其引發異常。另外請注意,您應該重新拋出異常,而不是手動殺死scriipt。 –

+0

謝謝。明天早上我會做,我不得不推送應用程序到今晚的生產。好,祝你有個愉快的夜晚 – Ben

回答

0

也許我的問題的標題,現在不適合,我發現錯誤源。但我寫下這個答案是因爲這是一個很好的教程,它解釋了從我們自己調試不同的錯誤。

如果你拋出任何PDO錯誤,按照this link,你會發現的方式。 感謝@Your Common Sense提供了一種學習解決錯誤的方法,而不是一個隨時可用的解決方案。

相關問題