我为此创建了两个表:
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”变量来进行第二次插入。
答案 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)
示例:
$stmt = $db->prepare("...");
$stmt->execute();
$id = $db->lastInsertId();
不使用
SELECT MAX(id) FROM table;
因为如果在选择之前执行一些其他插入查询是不安全的,并且在事务中对您不起作用。
答案 3 :(得分:0)
SELECT MAX(id) FROM table;