现在我单个文件的存入已成功,但是如果同时存入2个BLOB字段的文件怎么做?成功存入BLOB的单个字段代码:$sql = "INSERT INTO DUTBIN (CUSTOMERLOTID ,STATE ,HIFIX ,PGM ,\"Pgm version\" ,DEVICE ,TESTER ,\"Date\" ,STARTTIME ,BIN ) VALUES ('$customerid', '$state', '$hifix', '$pgm', '$pgm_version', '$device', '$tester', '$date', '$time', EMPTY_BLOB()) RETURNING Bin INTO:BIN";
echo $sql.'<br>';
$result = @OCIParse($con,$sql);
$blob = @OCINewDescriptor($con,OCI_D_LOB);
OCIBindByName($result,':BIN',&$blob,1,OCI_B_BLOB);
//OCIBindByName($result,':TESTITEM',&$blob1,1,OCI_B_BLOB);
OCIExecute($result,OCI_DEFAULT); 
if($blob->save($bin_data))
{
   OCICommit($con);
   echo "Insert successful!";
}
else
{
   echo "Insert Error!";
}
}未成功的多BLOB字段代码:
$sql = "INSERT INTO DUTBIN (CUSTOMERLOTID ,STATE ,HIFIX ,PGM ,\"Pgm version\" ,DEVICE ,TESTER ,\"Date\" ,STARTTIME ,BIN ,TESTITEM ) VALUES ('$customerid', '$state', '$hifix', '$pgm', '$pgm_version', '$device', '$tester', '$date', '$time', EMPTY_BLOB(),EMPTY_BLOB1()) RETURNING Bin INTO:BIN,TestItem INTO:TESTITEM";//不知道这么写对不对?
echo $sql.'<br>';
$result = @OCIParse($con,$sql);
$blob = @OCINewDescriptor($con,OCI_D_LOB);
OCIBindByName($result,':BIN',&$blob,1,OCI_B_BLOB);
OCIBindByName($result,':TESTITEM',&$blob1,1,OCI_B_BLOB);
OCIExecute($result,OCI_DEFAULT); 
if($blob->save($bin_data&$test_item))
{
   OCICommit($con);
   echo "Insert successful!";
}
else
{
   echo "Insert Error!";
}
}错误提示:
ocibindbyname() Unable to find descriptor property in ..
ociexecute:ORA-00933:sql command not properly ended in ..
OCI-Lob::save():OCI_INVALID_HANDLE in ..

解决方案 »

  1.   

    补充一点:需要同时存入BIN 和 TESTITEM 两个BLOB字段。
      

  2.   

    错误提示上说的是你的sql问题啊
      

  3.   

    最终还是自己解决了。代码如下:$sql = "INSERT INTO DUTBIN (CUSTOMERLOTID ,STATE ,HIFIX ,PGM ,\"Pgm version\" ,DEVICE ,TESTER ,\"Date\" ,STARTTIME ,BIN ,TESTITEM ) VALUES ('$customerid', '$state', '$hifix', '$pgm', '$pgm_version', '$device', '$tester', '$date', '$time',EMPTY_BLOB(),EMPTY_BLOB()) RETURNING Bin,TestItem INTO :BIN,:TESTITEM ";
    echo $sql.'<br>';
    $result = @OCIParse($con,$sql);
    $blob = @OCINewDescriptor($con,OCI_D_LOB);
    $blob1 = @OCINewDescriptor($con,OCI_D_LOB);
    OCIBindByName($result,':BIN',&$blob,1,OCI_B_BLOB);
    OCIBindByName($result,':TESTITEM',&$blob1,1,OCI_B_BLOB);
    OCIExecute($result,OCI_DEFAULT); 
    if(($blob->save($bin_data))&&($blob1->save($test_item)))
    {
        OCICommit($con);
        echo "Insert successful!";
    }
    else
    {
        echo "Insert Error!";
    }
    }