我一直在这样做,我知道连接有效,并且我将在另一个项目中对其进行测试。但是现在我需要使用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
答案 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]);