php插入oracle,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;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值