2012-02-28 44 views
0
只更新部分

代码:PHP IBM SQL DB2语句只出现任何错误信息

$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

-0.49用于将值嵌入到SQL *中,同时使用吓人的预备语句API *。 – cHao 2012-02-28 22:16:03

+0

我一直在使用占位符并绑定它们,但那也不起作用。 – Bead 2012-02-28 22:19:43

回答

1

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

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

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

+0

我在语句执行error_log(db2_stmt_error()。' - '。db2_stmt_errormsg());我只是在日志中得到了这个 - ' – Bead 2012-02-28 22:30:38

+0

哇,好吧,所以它没有错的PHP或SQL。我设置了一个新的RPG程序,它将字段值搞乱了。感谢您花时间帮我解决问题。 – Bead 2012-02-28 23:09:27