Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/06/2007, 09:39
M@uR0
 
Fecha de Ingreso: julio-2002
Ubicación: Valparaiso
Mensajes: 152
Antigüedad: 21 años, 9 meses
Puntos: 0
Error al insertar BLOB en ORACLE

Me encargaron hacer esto hace dias, y aun me estoy dando vueltas y ya este error no se como sacarlo, llevo solo cerca de 2 meses en esto de Php y ma cuesta un poco encontrar los errores, necesito agregar un .Pdf en una tabla, se que es mas simple guardar el nombre como texto y guardar el archivo mismo en una carpeta y asi solo llamarlo, pero aca no quieren eso y debo agregarlo a una tabla (trabajo en una institución pública y de hecho los cambios al php.ini los debo hacer en tiempo de ejecucion).

Me aparece este error:

[nativecode=ORA-01461: can bind a LONG value only for insert into a LONG column]

La estructura de la tabla es esta

BINARY_DATA

ID: number(4)
DESCRIPCION: VARCHAR2(100)
BINDATA: BLOB
FILENAME: VARCHAR2(50)
FILESIZE: VARCHAR2(50)
FILETYPE: VARCHAR2(100)

El codigo es este..

carga_archivo.htm
<form enctype="multipart/form-data" action="guardar_archivo.php" method="post">
Id <input name="id" type="text" size="6" maxlength="4">
<br>
Descripción <input type="text" name="titulo" size="30"><br>
Ubicación <input type="file" name="archivito"><br>
<input type="submit" value="Enviar archivo">
</form>

guarda_archivo.php

<?

// Cambio de configuracion del archivo PHP.ini
ini_set("upload_tmp_dir","../../upload");
ini_set("default_charset","ISO-8859-1");



$dbh = genera_dbh();

//require("dbconnect.inc.php");

$archivo = $_FILES["archivito"]["tmp_name"];
$tamanio = filesize($archivo);
$tipo = $_FILES["archivito"]["type"];
$nombre = $_FILES["archivito"]["name"];
$titulo = $_POST["titulo"];
$id = $_POST["id"];

//echo $archivo;
//exit;

if ( $archivo != "none" )
{
$fp = fopen($archivo, "r");
$contenido = fread($fp, filesize($archivo));
//$contenido =

//$contenido = fread($gestor, filesize($nombre_archivo));
//$contenido = addslashes($contenido);

//echo $contenido;
//exit;

fclose($fp);

$query = $dbh->prepare("INSERT INTO binary_data VALUES
(?,?,?,?,?,?)");

$datos = array($id,$titulo,$contenido,$nombre,$tamanio,$tip o);

//print_r($datos);
//exit;

$rs = $dbh->Execute($query,$datos);

if (PEAR::isError($rs)){
echo $rs->getDebugInfo();
exit;
}
}

A ver si me pueden ayudar..