thinkphp oracle 数据库插入数据

例如插入订单表和订单详情表

$orderList为订单数组,其中字段orderGoods为订单商品数据


$B2bOrderDtl = new B2bOrderDtlModel();

$B2bOrder= new B2bOrderModel();

foreach($orderList  as $v){

$data=array(

'orderid'         =>  'cms_sale_order_seq.nextval',   //表的序列.nextval,nextval函数获取下一个序列值;注:表的序列一般为表名_seq

'accountid'     =>  1000,
                'customerid'   => $val['erp_companyid'],

'credate'         => date('Y-m-d H:i:s', $val['add_time']);

);

//生成sql语句

$sql = $this->getAddSql($order);

        if($result=$B2bOrder->execute($sql)){

$B2bOrderDtl->addOrderDtl($this->getLastInsID(), $val['orderGoods']);

        }

}

//==================获取上一次插入id=================

/**
     * 取得Oracle最近插入的ID
     *
     * @param string $sequence 序列名
     * @return int
     */
    public function lastInsertId($sequence = '') {
        try {
            $lastInsID = $this->_linkID->lastInsertId();
        } catch(\PDOException $e) {
            //对于驱动不支持PDO::lastInsertId()的情况
            try {
                $lastInsID = 0;
                $seqPrefix = $this->sequence_prefix ? $this->sequence_prefix : '_seq';
                $sequence = $sequence ? $sequence : $this->table . $seqPrefix;
                $q = $this->query("SELECT {$sequence}.CURRVAL as t FROM DUAL"); //获取当前序列号
                if ($q) {
                    $lastInsID = $q[0]['t'];
                }
            } catch(\Exception $e) {
                //print "Error!: " . $e->getMessage() . "
";
                //exit;
            }
        }
        return $lastInsID;
    }


//=====================生成sql语句=====================

public function getAddSql($data){

foreach($data as $key=>$val){

$fields[]=$key;

}

$fields_str=implode(',',fields);

$sql="insert into 表名 ({$fields_str}) values ({$data['orderid']},{$data['accountid']},{$data['customerid']},to_date({$data['credate']},'yyyy-mm-dd hh24:mi:ss'))";

return $sql;

}

你可能感兴趣的:(thinkphp oracle 数据库插入数据)