是否可以在PHP中检索最后插入的Oracle行的rowid?我在努力:
$statement = oci_parse($conn, "INSERT INTO myTable (...) VALUES ( ...)");
$results = oci_execute($statement);
while($row = oci_fetch_assoc($statement)) {
$rowid = $row['ROWID'];
}
没有运气。我在获取或执行时获取错误定义未完成,并在获取行中获取。
答案 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
列的值。