首页 > 解决方案 > 如何获取 id Oracle PHP RETURNING INTO

问题描述

甲骨文 12c + PHP

如何从此查询中获取 id:

$execute = "INSERT INTO DODATEK SELECT NVL(MAX(dodatekid),0)+1,'$randomString' from DODATEK";

我对 oci_bind_by_name 和 RETURNING INTO 的尝试

$c = oci_connect($username, $password, $database);
if (!$c) {
    $m = oci_error();
    trigger_error('Could not connect to database: '. $m['message'], E_USER_ERROR);
}

$executeforId = "INSERT INTO DODATEK SELECT NVL(MAX(dodatekid),0)+1,'$randomString' from DODATEK RETURNING dodatekid INTO :dodatekId";
$exForId = oci_parse($c,$executeforId);
oci_bind_by_name($stid, ':dodatekId', $dodatekIdForTxt);
echo $dodatekIdForTxt;

我得到了警告:oci_bind_by_name():ORA-01036:非法变量名称/编号

标签: phporacleoracle-call-interface

解决方案


来自文档:

使用OUT绑定时必须指定maxlength ,以便 PHP 分配足够的内存来保存返回值。

所以尝试在绑定中添加 maxlength 和 type 参数:

`oci_bind_by_name($exForId, ':dodatekId', $dodatekIdForTxt, -1, OCI_B_INT);`

推荐阅读