2012-02-28 65 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