为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
精慕HU 2022-09-25 20:17:44
我正在尝试在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"}我在这里做错了什么?即使我取出一个值以仅插入一个或另一个值,我仍然会得到它,因此它不特定于一列。
查看完整描述

1 回答

?
九州编程

TA贡献1785条经验 获得超4个赞

也许 odbc 不能支持重用预准备语句、驱动程序、代码的其他部分或其他内容。无论如何,将准备好的语句移动到 foreach 循环中,以确保将重新生成它:

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


查看完整回答
反对 回复 2022-09-25
  • 1 回答
  • 0 关注
  • 145 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号