php连接oracle数据库的时候,其查询、更新、删除数据和MySQL类似,但是增加数据、特别是图片的时候就很不一样,这里面涉及到要创建一个blob对象,用blod对象去保存php图片,下面是当插入多张图片的时候的写法,直接上代码:

$conn = oci_connect('RGSUser', 'mycompany', '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = **.**.**.**(IP地址))(PORT = 1521)))(CONNECT_DATA = (SERVICE_NAME = orcl)))', 'utf8');

 $sql = $sql."ID,"; $value = $value."sys_guid(),";
$sql = $sql."LSH,"; $value = $value.":lsh".",";
$sql = $sql."VERFYTYPE,"; $value = $value.":verfytype".",";
$sql = $sql."IDENTIFICATIONNO,"; $value = $value.":id".",";
$sql = $sql."REALNAME,"; $value = $value.":realname".",";
$sql = $sql."PHONE,"; $value = $value.":phone".",";
$sql = $sql."BINDDRIVELICENSE,"; if ($dabh!=null) { $value = $value."1,"; }else{ $value = $value."0,";}
$sql = $sql."PICDATAIDENTIFACE,"; $value = $value."EMPTY_BLOB(),";
$sql = $sql."PICDATAIDENTIFACEWATERMARK,"; $value = $value."EMPTY_BLOB(),";
$sql = $sql."PICDATAIDENTIBACK,"; $value = $value."EMPTY_BLOB(),";
$sql = $sql."PICDATAIDENTIBACKWATERMARK,"; $value = $value."EMPTY_BLOB(),";
$sql = $sql."PICDATAIDENTIPERSON,"; $value = $value."EMPTY_BLOB(),";
$sql = $sql."PICDATAIDENTIPERSONWATERMARK,"; $value = $value."EMPTY_BLOB(),";
$sql = $sql."ISLOCK) VALUES ("; $value = $value."0".")"; //这里很重要,相当于保存图片的字段指定了对应的标签
$sql = $sql.$value." RETURNING PICDATAIDENTIFACE,PICDATAIDENTIFACEWATERMARK,PICDATAIDENTIBACK,PICDATAIDENTIBACKWATERMARK,PICDATAIDENTIPERSON,PICDATAIDENTIPERSONWATERMARK,PICDATAVEHICLELIC,PICDATAVEHICLELICWATERMARK INTO :PICDATAIDENTIFACE,:PICDATAIDENTIFACEWATERMARK,:PICDATAIDENTIBACK,:PICDATAIDENTIBACKWATERMARK,:PICDATAIDENTIPERSON,:PICDATAIDENTIPERSONWATERMARK,:PICDATAVEHICLELIC,:PICDATAVEHICLELICWATERMARK"; /*
上面的拼接语句比较复杂,下面是拼接之后的结果
string(1072) "INSERT INTO T_RRGU_SUBMITION (ID,LSH,VERFYTYPE,IDENTIFICATIONNO,REALNAME,PHONE,BINDDRIVELICENSE,PICDATAIDENTIFACE,PICDATAIDENTIFACEWATERMARK,PICDATAIDENTIBACK,PICDATAIDENTIBACKWATERMARK,PICDATAIDENTIPERSON,PICDATAIDENTIPERSONWATERMARK,DABH,CARINFOHPHM,CARINFOHPZL,CARINFOFDJH,PICDATAVEHICLELIC,PICDATAVEHICLELICWATERMARK,CREATED,SOURCETYPE,SOURCEAPP,JUDGESTATE,PUBLISHREULTTYPE,PUBLISHSTATE,QUERYPASSWORD,CONTACTADDRESS,ISLOCK) VALUES (sys_guid(),:lsh,:verfytype,:id,:realname,:phone,1,EMPTY_BLOB(),EMPTY_BLOB(),EMPTY_BLOB(),EMPTY_BLOB(),EMPTY_BLOB(),EMPTY_BLOB(),:dabh,:hphm,:hpzl,:fdjh,EMPTY_BLOB(),EMPTY_BLOB(),sysdate,:targetSourcetype,:sourcetype,0,-1,0,:mm,:contactAddress,0) RETURNING PICDATAIDENTIFACE,PICDATAIDENTIFACEWATERMARK,PICDATAIDENTIBACK,PICDATAIDENTIBACKWATERMARK,PICDATAIDENTIPERSON,PICDATAIDENTIPERSONWATERMARK,PICDATAVEHICLELIC,PICDATAVEHICLELICWATERMARK INTO :PICDATAIDENTIFACE,:PICDATAIDENTIFACEWATERMARK,:PICDATAIDENTIBACK,:PICDATAIDENTIBACKWATERMARK,:PICDATAIDENTIPERSON,:PICDATAIDENTIPERSONWATERMARK,:PICDATAVEHICLELIC,:PICDATAVEHICLELICWATERMARK"
*/
// 创建blob对象并且绑定数据 $stid = oci_parse($conn, $sql);
$PICDATAIDENTIFACEblob = oci_new_descriptor($conn,OCI_D_LOB);
$PICDATAIDENTIFACEWATERMARKblob = oci_new_descriptor($conn,OCI_D_LOB);
$PICDATAIDENTIBACKblob = oci_new_descriptor($conn,OCI_D_LOB);
$PICDATAIDENTIBACKWATERMARKblob = oci_new_descriptor($conn,OCI_D_LOB);
$PICDATAIDENTIPERSONblob = oci_new_descriptor($conn,OCI_D_LOB);
$PICDATAIDENTIPERSONWATERMARKblob = oci_new_descriptor($conn,OCI_D_LOB); oci_bind_by_name($stid, ':lsh', $lsh);
oci_bind_by_name($stid, ':verfytype', $verfytype);
oci_bind_by_name($stid, ':id', $id);
oci_bind_by_name($stid, ':realname', $realname);
oci_bind_by_name($stid, ':phone', $phone); oci_bind_by_name($stid, ':targetSourcetype', $targetSourcetype);
oci_bind_by_name($stid, ':sourcetype', $sourcetype);
oci_bind_by_name($stid, ':mm', $mm);
oci_bind_by_name($stid, ':contactAddress', $contactAddress); //执行语句
oci_execute($stid, OCI_DEFAULT); //blob对象保存对应的图片数据
if ($PICDATAIDENTIFACEblob->save(base64_decode($picIdentiFace)) && $PICDATAIDENTIFACEWATERMARKblob->save(base64_decode($picIdentiFaceWaterRemark)) && $PICDATAIDENTIBACKblob->save(base64_decode($picIdentiBack)) && $PICDATAIDENTIBACKWATERMARKblob->save(base64_decode($picIdentiBackWaterRemark)) && $PICDATAIDENTIPERSONblob->save(base64_decode($picIdentiWithUser)) && $PICDATAIDENTIPERSONWATERMARKblob->save(base64_decode($picIdentiWithUserWaterRemark))) {
// On success, commit the transaction
// var_dump("数据正确添加到数据库中");
oci_commit($conn);
oci_free_statement($stid);
oci_close($conn);
}else{ $error = oci_error();
echo $error;
oci_rollback($conn);
oci_free_statement($stid);
oci_close($conn);
$err = "内部错误!";
}

php 连接oracle插入多张图片的方法的更多相关文章

  1. Asp.Net 应用程序在IIS发布后无法连接oracle数据库问题的解决方法

    asp.net程序编写完成后,发布到IIS,经常出现的一个问题是连接不上Oracle数据库,具体表现为Oracle的本地NET服务配置成功:用 pl/sql 等工具也可以连接上数据库,但是通过浏览器中 ...

  2. C#连接Oracle数据库的四种方法

    C#连接数据库的四种方法 在进行以下连接数据库之前,请先在本地安装好Oracle Client,同时本次测试System.Data的版本为:2.0.0.0. 在安装Oracle Client上请注意, ...

  3. EF6 连接Oracle 迁移数据错误解决方法

    环境:vs2015 + EF6 +ODP 数据库Oracle 11G add-migratioin 正常,但在update-database 时报如下错误: System.Runtime.Serial ...

  4. VS2010下连接Oracle数据库的方法

    在vs2010下使用OleDB连接Oracle数据库 ——此方法不需要配置数据源. 1. 在“服务器资源管理器”中,选择“数据库连接”,右击,选择“添加连接”. 2. 出现下面的界面,并按图中选择“用 ...

  5. Asp.Net通过ODBC连接Oracle数据库

    本来有个项目是通过安装Oracle client然后让asp.net引用System.Data.OracleClient来访问Oracle数据库的,但是不知道为什么老是报:ORA-12170:连接超时 ...

  6. c#连接oracle的几种方式

    一:通过System.Data.OracleClient(需要安装Oracle客户端并配置tnsnames.ora)1. 添加命名空间System.Data.OracleClient引用2. usin ...

  7. C#连接Oracle数据库查询数据

    C#连接Oracle数据库可以实现许多我们需要的功能,下面介绍的是C#连接Oracle数据库查询数据的方法,如果您对C#连接Oracle数据库方面感兴趣的话,不妨一看. using System; u ...

  8. .net连接Oracle

    通过网上了解到.net连接Oracle主要有3种方法.(1)System.Data.OracleClient微软的System.Data.OracleClient可以直接引用,但是VS会提示“Syst ...

  9. C# Oracle海量数据瞬间插入到数据库的方法

    C# 海量数据瞬间插入到数据库的方法 当我们在数据库中进行大量的数据追加时,是不是经常因为数据量过大而苦恼呢?而所谓的海量数据,一般也是上万级的数据,比如我们要添加一百万条数据,应该如何提高它的效率呢 ...

随机推荐

  1. SDN(Software Defined Network):软件定义网络----转载

    SDN(Software Defined Network):软件定义网络 传统的网络转发行为: 1)逐设备单独控制,纯分布式控制. 2)控制面和转发面在同一个设备中,耦合紧密. 管理员无法直接操控转发 ...

  2. RGB转到HSV色彩空间转换

    原文链接:https://blog.csdn.net/lsg19920625/article/details/78416649

  3. MySQL表连接原理

    以下文章均来自掘金小测: https://juejin.im/book/5bffcbc9f265da614b11b731/section/5c061b0cf265da612577e0f4 表连接本质: ...

  4. SAP_SD常用事务代码

    1.创建/修改/显示销售订单:VA01/VA02/VA03 2.根据销售订单创建交货单:VL01N 3.修改/显示交货单:VL02N/VL03N 4.交货单发货过账:VL02N 5.发货过账冲销:VL ...

  5. java Kafka 简单应用实例

    kafka官方中文文档  http://kafka.apachecn.org/ java Kafka 简单应用实例  下面是Linux下的单机模式:https://blog.csdn.net/fct2 ...

  6. leetcode--200--python(深度广度优先遍历实现代码)

    点滴积累,厚积薄发,做好每一天,向时间要效率,向生命要质量. 一.深度优先搜索和广度优先搜索DFS(Depth-First-Search),是盲目搜索算法的一种.常常用在树的遍历及图的处理上.假设当前 ...

  7. vue组件传值 part2

    非父子组件传值 轻量级 视图层框架 复杂组件间传值,引进其他的工具或者设计模式 1.vuex 2.总线机制 //main line 1.在main.js中注册全局的bus Vue.prototype. ...

  8. Java中包的基本管理与编译

    在写程序的过程中,总会出现代码编译过关,但是项目偏偏报错的情况,遇到几种情况,都在此一一记录,希望以后少走弯路. 1.添加jsp文件的时候,会报错 Multiple annotations found ...

  9. .net学习——第一个程序

    时隔3年.这个窗口 看到觉得特别亲切,舒服 昨天学了 一些概念 ref out 以及引用类型值类型.lambda  匿名方法 什么的 发现啊.当你知道 内存的 数值和对象的处理机制,js的匿名函数,钩 ...

  10. Serverless 公司的远程团队沟通策略

    本文系译文,Serverless 团队分散在全球各地,本文介绍我们如何管理沟通策略和远程协作. 原作者:FelixDesroches 译者:Aceyclee 首先向不了解我们的人说明一下,Server ...