簡體   English   中英

使用 PHP 參數化查詢執行 db2 insert 時出錯

[英]Error doing db2 insert with PHP parameterized query

我正在嘗試在 PHP 中運行 db2 參數化查詢,在執行插入時,出現錯誤: Invalid parameter number., SQL state S1002 in SQLDescribeParameter

這是我的腳本:

        $getItems = "
        SELECT 
            ID,
            EXPIRATION_TIMESTAMP
        FROM table1
    ";

    $stmt = odbc_exec($DB2connDEV, $getItems);

    $prepInsert = odbc_prepare($DB2connPROD, "INSERT INTO table2 (originalID, expiration_timestamp) VALUES(?,?)");

    while($gettingDevItems = odbc_fetch_array($stmt)){

        $rows[] = $gettingDevItems;
    }

    foreach($rows as $row){

        $originalID = $row['ID'];
        $expiration_timestamp = $row['EXPIRATION_TIMESTAMP'];


        $getIdentity = "SELECT IDENTITY_VAL_LOCAL() AS LASTID FROM SYSIBM.SYSDUMMY1";

        $insertTable = odbc_execute($prepInsert, array($originalID, $expiration_timestamp));//error at this line
        $insertTable = odbc_exec($DB2connPROD, $getIdentity);
        $row = odbc_fetch_array($stmt);
        $ret = $row['LASTID'];
    }

當我對參數數組執行 var_dump 時,我得到以下信息:

array(2) {
  [0]=>string(1) "2"
  [1]=>string(26) "2019-10-03 00:00:00.000000"
}

我在這里做錯了什么? 即使我取出一個值只插入一個或另一個我仍然得到它,所以它不是特定於一列。

也許 odbc 不能支持重用准備好的語句,或者你的驅動程序,或者你的代碼的其他部分,或者其他東西。 無論如何,將准備好的語句移到 foreach 循環中以確保您將重建它:

foreach($rows as $row){
   $prepInsert = odbc_prepare($DB2connPROD, "INSERT INTO table2 (originalID, expiration_timestamp) VALUES(?,?)");
...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM