在PHP / OCI中检索上次插入的ROWID

时间:2013-12-02 18:20:20

标签: php oracle oci

是否可以在PHP中检索最后插入的Oracle行的rowid?我在努力:

$statement = oci_parse($conn, "INSERT INTO myTable (...) VALUES ( ...)");
$results = oci_execute($statement);
while($row = oci_fetch_assoc($statement)) {
    $rowid = $row['ROWID'];
}

没有运气。我在获取或执行时获取错误定义未完成,并在获取行中获取

2 个答案:

答案 0 :(得分:2)

宣告:

$var = "AAAV1vAAGAAIb4CAAC";

使用:

INSERT INTO myTable (...) VALUES ( ...)
RETURNING RowId INTO :p_val

将变量绑定到PHP变量:

oci_bind_by_name($statement, ":p_val", $val, 18);

答案 1 :(得分:0)

由于以前的答案对我来说还不是很清楚,因为它缺少一些重要信息,我将指出类似的方法。

在您的SQL语句中,添加Esc条款。

RETURNING INTO

$statement = oci_parse($conn, "INSERT INTO myTable (...) VALUES ( ...) RETURNING ID INTO :id"); 是您要返回的列的名称。在执行ID之前,您需要将PHP变量绑定到返回值。在这里,我使用了$statement(您无需事先声明它或分配任何默认值)。

$returnId

绑定变量后,该语句才能执行。

oci_bind_by_name($statement, ":id", $returnId);

$success = @oci_execute($statement); 现在具有先前插入的$returnId列的值。