我正在尝试在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(?,?)");
...- 1 回答
- 0 关注
- 145 浏览
添加回答
举报
0/150
提交
取消
