在 iSeries 上,或許還有其他 db2 平台上,此函式未定義 -- PHP 致命錯誤:呼叫未定義的函式 db2_last_insert_id()。
替代方案是使用 IDENTITY_VAL_LOCAL()。
上述範例變成
<?php
$database = "SAMPLE";
$user = "db2inst1";
$password = "ibmdb2";
$conn = db2_connect($database, $user, $password);
if($conn) {
$createTable = "CREATE TABLE lastInsertID
(id integer GENERATED BY DEFAULT AS IDENTITY, name varchar(20))";
$insertTable = "INSERT INTO lastInsertID (name) VALUES ('Temp Name')";
$getIdentity = "SELECT IDENTITY_VAL_LOCAL() AS LASTID FROM SYSIBM.SYSDUMMY1";
$stmt = @db2_exec($conn, $createTable);
$stmt = db2_exec($conn, $insertTable);
$stmt = db2_exec($conn, $getIdentity);
$row = db2_fetch_assoc($stmt);
$ret = $row['LASTID'];
if($ret) {
echo "最後插入的 ID 為: " . $ret . "\n";
} else {
echo "沒有最後插入的 ID。\n";
}
db2_close($conn);
}
else {
echo "連線失敗。";
}
?>