![](/img/trans.png)
[英]PDO error when trying to insert to iSeries DB2 with php on Linux
[英]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.