2024 PHP 日本会议

db2_last_insert_id

(PECL ibm_db2 >= 1.7.1)

db2_last_insert_id返回在此连接上成功执行的最后一个插入查询的自动生成的 ID

描述

db2_last_insert_id(资源 $resource): ?字符串

返回在此连接上成功执行的最后一个插入查询的自动生成的 ID。

此函数的结果不受以下任何因素的影响:

  • 针对没有标识列的表的包含 VALUES 子句的单行 INSERT 语句。

  • 包含 VALUES 子句的多行 INSERT 语句。

  • 包含 fullselect 的 INSERT 语句。

  • ROLLBACK TO SAVEPOINT 语句。

参数

资源

来自 db2_connect()db2_pconnect() 返回的有效连接资源。此参数的值不能是语句资源或结果集资源。

返回值

返回在此连接上成功执行的最后一个插入查询的自动生成的 ID。

示例

示例 #1 一个 db2_last_insert_id() 示例

以下示例演示如何返回在此连接上成功执行的最后一个插入查询的自动生成的 ID。

<?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')";

$stmt = @db2_exec($conn, $createTable);

/* 检查是否插入了单行。 */
$stmt = db2_exec($conn, $insertTable);
$ret = db2_last_insert_id($conn);
if(
$ret) {
echo
"最后一个插入的ID是: " . $ret . "\n";
} else {
echo
"没有最后一个插入的ID。\n";
}

db2_close($conn);
}
else {
echo
"连接失败。";
}
?>

以上示例将输出

Last Insert ID is : 1

添加注释

用户贡献的注释 1 条注释

Mark Adkins
14 年前
在 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
"连接失败。";
}
?>
To Top