2

在这里,我试图插入一条记录并检索最后插入的序列 ID,但没有取得任何成功,谁能帮助我,指导我 oracle 如何与 php 一起工作?

$query = 'INSERT INTO hist_news (id,headline,reportedon,reportedby,loc,story,more,helperjson,refjson,createdt,createdby) VALUES(id.nextval, :headline, :reportedon, :reportedby , :loc , :story , :more , :helper , :ref , sysdate , :createdby) return id.nextval';
        $this->stmt = oci_parse($this->oci,$query);
        oci_bind_by_name($this->stmt,':headline',$headline);
        oci_bind_by_name($this->stmt,':reportedon',$reportedon);
        oci_bind_by_name($this->stmt,':reportedby',$reportedby);
        oci_bind_by_name($this->stmt,':loc',$loc);
        oci_bind_by_name($this->stmt,':story',$story);
        oci_bind_by_name($this->stmt,':more',$more);
        oci_bind_by_name($this->stmt,':helper',$helperjson);
        oci_bind_by_name($this->stmt,':ref',$refjson);
        if($re = oci_execute($this->stmt)){
            return $re;
        } else {
            return false;
        }
4

2 回答 2

4

在插入语句之后就可以执行了select id.currval from dual。这应该给你最新的价值。请注意,这仅在您获取 nextval 后仅在当前会话中有效,并且不能单独使用。

于 2013-07-28T11:03:30.357 回答
2

将以下内容添加到您的插入 SQL 查询中:

returning id into :id

例子:

$query = 'INSERT INTO hist_news (id,headline,reportedon,reportedby,loc,story,more,helperjson,refjson,createdt,createdby) VALUES(id.nextval, :headline, :reportedon, :reportedby , :loc , :story , :more , :helper , :ref , sysdate , :createdby) returning id into :id';

并将其绑定到您的声明

oci_bind_by_name($this->stmt,":ID",$id);

现在$id将在执行后具有最后插入的 ID oci_execute($this->stmt)

此方法适用于 OCI8。

于 2016-03-09T20:59:13.273 回答