使用PHP获取Oracle中最后插入的ID

时间:2019-06-13 15:14:57

标签: php oracle

我为此创建了两个表:

CREATE TABLE t1 (id NUMBER GENERATED AS IDENTITY);
CREATE TABLE t2 (id NUMBER GENERATED AS IDENTITY);

我将一些数据插入到t1中,然后我需要将在该插入中生成的ID插入到t2中。

例如:

"insert into t1 (name, description) values ('asd','dsa')"
**getting that autogenerated ID
"insert into t2 (idFromt1,name) values (idFromt1,'sarasa')"

我看到许多例子在做

"insert into t1 (name, description) values ('asd','dsa') returning ID into inserted_id";

但是我不能/不知道如何从php检索“ inserted_id”变量来进行第二次插入。

4 个答案:

答案 0 :(得分:2)

您可以(应该?)使用returning值。

例如,使用PDO:

$query = "insert into t1 (name, description) values ('asd','dsa') returning ID";

$stmt = $pdo->query($query);

$id = $stmt->fetchColumn();

答案 1 :(得分:2)

我正在搜索PDO,并进入了这个页面:

$qry="INSERT INTO t1 (NOMBRE) VALUES ('sarasa') returning ID into :inserted_id";

$parsed = oci_parse($this->conn, $qry);

oci_bind_by_name($parsed, ":inserted_id", $idNumber,32);
oci_execute($parsed);
echo $idNumber;

所以我假设oci_bind_by_name仅是一个方向,但不是。 这会将生成的ID保存到变量$ idNumber中,而这正是我所需要的。谢谢大家的回答。

答案 2 :(得分:1)

使用PDO::lastInsertID

示例:

$stmt = $db->prepare("...");
$stmt->execute();
$id = $db->lastInsertId();

不使用

SELECT MAX(id) FROM table;

因为如果在选择之前执行一些其他插入查询是不安全的,并且在事务中对您不起作用。

答案 3 :(得分:0)

使用PDO::lastInsertId

SELECT MAX(id) FROM table;