如何让Oracle PHP返回到

如何让Oracle PHP返回到,php,oracle,oracle-call-interface,Php,Oracle,Oracle Call Interface,Oracle 12c+PHP 如何从此查询中获取id: $execute = "INSERT INTO DODATEK SELECT NVL(MAX(dodatekid),0)+1,'$randomString' from DODATEK"; 我用什么试过 oci\u按\u名称绑定\u并返回到 $c = oci_connect($username, $password, $database); if (!$c) { $m = oci_error(); trigger_error

Oracle 12c+PHP

如何从此查询中获取id:

$execute = "INSERT INTO DODATEK SELECT NVL(MAX(dodatekid),0)+1,'$randomString' from DODATEK";
我用什么试过 oci\u按\u名称绑定\u并返回到

$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:来自文档的非法变量名称/编号

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

因此,请尝试在绑定中添加maxlength和type参数:

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

使用
$exForId
而不是
$stid
警告已消失,但返回不起作用我添加了它,每次我得到0作为响应