代码:
$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 :(得分:1)
运行执行后,您可能想要检查SQLSTATE的值。这将向您展示DB2向您抛出的实际错误。
您可以使用db2_stmt_error()
在PHP中检索SQLSTATE,它将为您提供上次执行的SQL状态(如果您传递特定资源,则该资源上的最后一次执行)。
如果您想输出人类可读的SQL错误消息,可以使用db2_stmt_errormsg()
,它将输出SQLSTATE和相应的错误消息字符串。