Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Me sale ? al guardar imágen en BD MySQL

Estas en el tema de Me sale ? al guardar imágen en BD MySQL en el foro de Bases de Datos General en Foros del Web. Estimados amigos, estoy al borde de la desesperación con un código que ya use previamente en un sitio, sólo le cambiado algunas variables y datos ...
  #1 (permalink)  
Antiguo 09/03/2005, 15:40
 
Fecha de Ingreso: febrero-2002
Ubicación: Lima
Mensajes: 48
Antigüedad: 22 años, 9 meses
Puntos: 0
Me sale ? al guardar imágen en BD MySQL

Estimados amigos, estoy al borde de la desesperación con un código que ya use previamente en un sitio, sólo le cambiado algunas variables y datos adicionales de la tabla y no me funciona por nada del mundo

Lo que quiero, es insertar una imágen como un Blob en una BD MySQL, mi tabla tiene la siguiente estructura:

Cita:
CREATE TABLE `noticias` (
`id_noticia` int(4) NOT NULL auto_increment,
`autor` varchar(255) default NULL,
`titulo` varchar(255) default NULL,
`categoria` varchar(255) default NULL,
`fecha` datetime NOT NULL default '0000-00-00 00:00:00',
`noticia` blob,
`imagen_binario` blob,
`imagen_nombre` varchar(255) default NULL,
`imagen_peso` varchar(15) default NULL,
`imagen_tipo` varchar(15) default NULL,
KEY `id_noticia` (`id_noticia`)
) TYPE=MyISAM AUTO_INCREMENT=6 ;
Y mi código para guardar lo obtenido desde el formulario es el siguiente:

Código PHP:
    include("conex.php");
    $connect = conectarse();
    elegir();
        
if ($HTTP_POST_VARS)
    {
        //Primero, arranca el bloque PHP y checkea si el archivo tiene nombre.  Si no fue asi, te remite de nuevo al formulario de inserción:
        // No se comprueba aqui si se ha subido correctamente.
        if (empty($_FILES['archivo']['name'])){
        echo "Error, no se encontró la imágen"; //o como se llame el formulario ..
        exit;
        }
        
        // archivo temporal (ruta y nombre).
         $imagen_nombre_temporal=$_FILES[archivo][tmp_name] ;
        
        // leer del archvio temporal .. el binario subido.
        // "rb" para Windows .. Linux parece q con "r" sobra ...
        $imagen_contenido = addslashes(fread(fopen($imagen_nombre_temporal, "rb"), filesize($imagen_nombre_temporal)));
        
        // Obtener del array FILES (superglobal) los datos del binario .. nombre, tamaño y tipo.
        $imagen_nombre=$_FILES[archivo][name];
        $imagen_peso=$_FILES[archivo][size];
        $imagen_tipo=$_FILES[archivo][type];

        //recibimos las variables enviadas por el formulario
        $titulo=$_POST[titulo];
        $autor=$_POST[autor];
        $categoria=$_POST[categoria];
        $articulo=$_POST[articulo];
        
        //insertamos los registros almacenados en las variables
        $consulta = "INSERT INTO noticias VALUES (NULL,'$autor','$titulo','$categoria',NOW(),'$articulo', '$imagen_contenido', '$imagen_nombre', '$imagen_peso', '$imagen_tipo')";
        $grabar = mysql_query($consulta,$connect);        
        if($grabar){
        ?><script language="JavaScript">window.location="noticias_admin.php"</script><?php }
        else{
        echo 
"Se ha producido un error al publicar la noticia.<BR>Vuelve a Intentarlo.";
        }
    }
Puede que me falte cerrar algún { } por ahí, error de copiar y pegar.
El asunto es que el código corre, pero a la hora de revisar con el PhpMyAdmin el registro recien ingresado, en vez de aparecer X y el lapiz para borrar y editar respectivamente, sale un signo de interrgogación (?).
El problema está definitivamente en el campo imagen_binario, pues he probado insertando todos los demás campos menos ese, y no da esos ? ?, recien los da cuando ingreso ese campo diferente de NULL. Ahora, para tener una mejor referencia, les cuento que cuando intento darle editar a ese registro con el ? ? el MySQL me da el siguiente HORROR: "MySQL ha devuelto un valor vacío (i.e. cero columnas)."

Seguro de que uds me podrán dar luces en este dolor de cabeza , se despide

Demis
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:41.