使用 PHP 参数化查询执行 db2 插入时出错

我正在尝试在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"

}

我在这里做错了什么?即使我取出一个值以仅插入一个或另一个值,我仍然会得到它,因此它不特定于一列。


精慕HU
浏览 146回答 1
1回答

九州编程

也许 odbc 不能支持重用预准备语句、驱动程序、代码的其他部分或其他内容。无论如何,将准备好的语句移动到 foreach 循环中,以确保将重新生成它:foreach($rows as $row){    $prepInsert = odbc_prepare($DB2connPROD, "INSERT INTO table2 (originalID, expiration_timestamp) VALUES(?,?)"); ...
打开App,查看更多内容
随时随地看视频慕课网APP