如何在Oracle中使用PHP-ODBC上传文件?

时间:2018-10-10 19:52:00

标签: php oracle odbc blob

我一直在这样做,我知道连接有效,并且我将在另一个项目中对其进行测试。但是现在我需要使用ODBC在php中的oraclo中处理blob数据,但我不知道该怎么做。

我从oracle得到错误:[Oracle] [ODBC] [Ora] ORA-00972: 标识符太长...

  

代码:PHP与oracle的odbc连接

<code>
<?php 
if(filter_input(INPUT_POST, 'btnGuardar')){
  $id=  filter_input(INPUT_POST, 'id');


  $archivo_nombre=$_FILES['archivo']['name'];
  $archivo_tipo = $_FILES['archivo']['type'];  
  $archivo_temp = $_FILES['archivo']['tmp_name']; 
  $archivo_string=  file_get_contents($archivo_temp);

  $user = "user ";
  $password = "password";
  $driver = "Oracle in OraClient11g_home1";
  $odbc_string = "DSN=INVENTARIOREPORTS;DRIVER= 
  {".$driver."};SERVER=127.0.0.1;DATABASE=DB;";

  $conn = odbc_connect($odbc_string,$user,$password);

  $sql = " INSERT INTO ARCHIVOS (ID, ARCHIVO, NOMBRE, TIPO) VALUES 
  (".$id.",".$archivo_string.",'".$archivo_nombre."','".$archivo_tipo."') ";

  $res = odbc_exec($conn,$sql);

  if ($res) {
    echo 'correcto';
  }else{
    echo 'Error al guardar';
  }

  odbc_close($conn);

  $res = null;
}
?>

<!--FORMULARIO-->
<!DOCTYPE html>
<html>
 <head>
   <meta charset="UTF-8">
   <title></title>
  </head>
 <body>
   <form method="post" action="" enctype="multipart/form-data">
     id <input type="number" name="id" /><br/>
     <input type="file" name="archivo" /><br/><br/>
     <input type="submit" name="btnGuardar" value="Guardar" />
   </form>
 </body>
</html>

</code>
  

代码:PHP与oracle的odbc连接

$STACK_STATUS

我还希望能够访问这些文件,请您帮我一下?enter image description here

1 个答案:

答案 0 :(得分:0)

如果打印$sql,将会看到有3个字符串值,但只引用了其中2个。

避免这种愚蠢的拼写错误和SQL注入的正确方法是使用准备好的语句:

$sql = 'INSERT INTO ARCHIVOS (ID, ARCHIVO, NOMBRE, TIPO)
    VALUES(?, ?, ?, ?)';
$stmt = odbc_prepare($conn, $sql);
$success = odbc_execute($stmt, [$id, $archivo_string, $archivo_nombre, $archivo_tipo]);