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,求助关于数据库创建问题,多谢!!