zoukankan      html  css  js  c++  java
  • php 连接oracle插入多张图片的方法

      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 = "内部错误!";
    }
  • 相关阅读:
    2.1 JavaScript应用开发实践指南
    2 JavaScript应用开发实践指南
    一 JavaScript应用开发实践指南
    工作“触雷”经历与总结--记博弈论的应用
    设计模式之 简单工厂,工厂方法,抽象工厂
    C#5.0之后推荐使用TPL(Task Parallel Libray 任务并行库) 和PLINQ(Parallel LINQ, 并行Linq). 其次是TAP(Task-based Asynchronous Pattern, 基于任务的异步模式)
    C语言知识结构
    Visual Studio 项目和解决方案 路径修改(解决部分模板丢失的问题)
    C#静态方法和实例方法的内存分配测试
    Java字符串String
  • 原文地址:https://www.cnblogs.com/Caersi/p/7451007.html
Copyright © 2011-2022 走看看