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

Posted

技术标签:

【中文标题】PHP IBM SQL DB2 语句仅部分更新,没有错误消息【英文标题】:PHP IBM SQL DB2 statement only updating only partially with no error messages 【发布时间】:2012-02-28 22:10:17 【问题描述】:

代码:

    $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 语句,它会运行,并且所有字段都会更新为我指定的值。有没有人知道这里发生了什么?这让我难过了好几个小时。

【问题讨论】:

-0.49 用于将值嵌入到您的 SQL 中同时使用该死的准备好的语句 API 我一直在使用占位符并绑定它们,但这也不起作用。 【参考方案1】:

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

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

如果你想输出一个人类可读的 SQL 错误信息,你可以使用db2_stmt_errormsg(),它会输出 SQLSTATE 和相应的错误信息字符串。

【讨论】:

我在语句执行后尝试了这个 error_log(db2_stmt_error().' - '.db2_stmt_errormsg());我刚刚在日志中得到了这个' - ' 哇,好的,所以 PHP 或 SQL 没有问题。有一个新的 RPG 程序在我设置字段值后弄乱了它们。无论如何,感谢您花时间帮助我。

以上是关于PHP IBM SQL DB2 语句仅部分更新,没有错误消息的主要内容,如果未能解决你的问题,请参考以下文章

准备好的语句中的 IBM DB2 标量函数参数

求助各位大神,小弟初学IBM DB2,求助关于数据库创建问题,多谢!!

如何在没有超时的情况下锁定 Ibm Db2 中的更新行?

使用 IBM SQL 导航锁定文件创建的 AS400 DB2 视图正在使用

如何通过SQL从IBM db2中的查询中获取列名

嵌套SQL语句訪问DB2中SQLCA的调用技巧