2016-06-28 94 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提供了一种学习解决错误的方法,而不是一个随时可用的解决方案。

相关问题