PHP IBM SQL DB2语句仅部分更新,没有错误消息

时间:2012-02-28 22:10:17

标签: php sql db2 ibm-midrange

代码:

    $sql =      'UPDATE library/tablename ' .
           'SET foo1 = \'THIS IS A TEST\', foo2 = 1234567890, foo3 = 1234'.
           'WHERE foo4 = 165436';

    $stmt = db2_prepare($dbConn, $sql)
        or die("Error: Unable to prepare statement");

    $exec = db2_execute($stmt);

我在PHP中运行它并且在执行之后我去看表,我看到foo1字段已经改变,但是foo2和foo3仍然是它们的默认值,即零。

如果我从IBM终端上的“strsql”运行$ sql语句,它将运行并且所有字段都更新为我指定的值。有没有人知道这里发生了什么?这让我难以忍受了好几个小时。

1 个答案:

答案 0 :(得分:1)

运行执行后,您可能想要检查SQLSTATE的值。这将向您展示DB2向您抛出的实际错误。

您可以使用db2_stmt_error()在PHP中检索SQLSTATE,它将为您提供上次执行的SQL状态(如果您传递特定资源,则该资源上的最后一次执行)。

如果您想输出人类可读的SQL错误消息,可以使用db2_stmt_errormsg(),它将输出SQLSTATE和相应的错误消息字符串。