Foros del Web » Programando para Internet » PHP »

no me deja leer una imagen de una tabla e insertarla en otra

Estas en el tema de no me deja leer una imagen de una tabla e insertarla en otra en el foro de PHP en Foros del Web. Hola a todos, Os cuento, Tengo una imagen binaria que he insertado en una tabla; el archivo lo obtuve haciendo: $foto_temporal=$_FILES['foto']['tmp_name']; $foto_size=$_FILES['foto']['size']; y despues esto: ...
  #1 (permalink)  
Antiguo 18/10/2009, 09:56
Avatar de JOSANCIN  
Fecha de Ingreso: septiembre-2008
Ubicación: huesca
Mensajes: 298
Antigüedad: 15 años, 7 meses
Puntos: 0
no me deja leer una imagen de una tabla e insertarla en otra

Hola a todos,

Os cuento,

Tengo una imagen binaria que he insertado en una tabla;
el archivo lo obtuve haciendo:

$foto_temporal=$_FILES['foto']['tmp_name'];
$foto_size=$_FILES['foto']['size'];

y despues esto:

$f1= fopen($foto_temporal,"rb");
#leemos el fichero completo limitando
# la lectura al tamaño de fichero
$foto_reconvertida = fread($f1, $foto_size);
#anteponemos \ a las comillas que pudiera contener el fichero
# para evitar que sean interpretadas como final de cadena
$foto_reconvertida=addslashes($foto_reconvertida);

guardo $foto_reconvertida en una tabla de una base de datos sin ningun problema. A esa tabla le llamo "provisional"

El problema viene cuando quiero leer ese valor e insertarlo en una tabla, hago lo siguiente en otro script:

conectar("bd");
$resultado=consultar("select * from provisional");
while($fila=mysql_fetch_array ($resultado)){
$a=$fila["imagen"]; //imagen es el nombre del campo donde guardo la imagen

$tabla="definitiva";
$b="insert into $tabla (id,imagen) values ('','$a')";
mysql_query($b);
}

Me da un mensaje como que la consulta es erronea.
, he probado que $fila["imagen"] se puede leer pero no insertar en la otra tabla ("definitiva")

Agradecería si alguien me pudiese aportar una solucion porque no tengo ni idea a que se debe esto
  #2 (permalink)  
Antiguo 18/10/2009, 10:41
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: no me deja leer una imagen de una tabla e insertarla en otra

Escribe la consulta de esta forma para ver cual es el error especifico
Código PHP:
Ver original 
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 18/10/2009, 11:37
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: no me deja leer una imagen de una tabla e insertarla en otra

Hola
Pregunta
Código php:
Ver original
  1. $b="insert into $tabla (id,imagen) values ('','$a')";
el id es auto_increment?
si es asi, intenta esto
Código php:
Ver original
  1. $b="insert into $tabla (imagen) values ('$a')";
saludos

Última edición por mortiprogramador; 18/10/2009 a las 11:38 Razón: mejora
  #4 (permalink)  
Antiguo 19/10/2009, 05:33
Avatar de JOSANCIN  
Fecha de Ingreso: septiembre-2008
Ubicación: huesca
Mensajes: 298
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: no me deja leer una imagen de una tabla e insertarla en otra

Hola, escribo para contar la solucion

Segui el consejo de abimaelcr y puse y sql_error() para conocer el error, me salio en pantalla que era un error de sintaxis de mysql por lo que probe con las comillas

while($fila=mysql_fetch_array ($resultado)){

al principio hice al igual que en el resto de campos que eran de tipo varchar o int
$foto=$fila["imagen"]; y no funcionaba

me funciono cuando en el campo de la imagen hice simplemente
$foto='$fila["imagen"]';

}

muchas gracias a abimaelcr
  #5 (permalink)  
Antiguo 19/10/2009, 06:35
Avatar de JOSANCIN  
Fecha de Ingreso: septiembre-2008
Ubicación: huesca
Mensajes: 298
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: no me deja leer una imagen de una tabla e insertarla en otra

Escribo otra vez, todavia sigo sin solucionarlo, me habia confundido...
Indica que es un error de sintaxis:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 2
  #6 (permalink)  
Antiguo 19/10/2009, 07:23
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: no me deja leer una imagen de una tabla e insertarla en otra

Verifica que esta enviando la variable $a. Haz un var_dump a esa variable justo antes del query.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #7 (permalink)  
Antiguo 19/10/2009, 07:33
Avatar de JOSANCIN  
Fecha de Ingreso: septiembre-2008
Ubicación: huesca
Mensajes: 298
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: no me deja leer una imagen de una tabla e insertarla en otra

Hola,
Si, aparece la pantalla llena de signos raros, es extraño, como dije antes, esa variable la puedo visualizar pero no puedo insertarla en la tabla,
en tu experiencia sabrías algun sitio mas donde puedo mirar, mi version de MYSQL es 5.1.32, ¿sabes como puedo investigar algo más?

Gracias y que vaya bien
  #8 (permalink)  
Antiguo 19/10/2009, 07:49
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: no me deja leer una imagen de una tabla e insertarla en otra

¿Como tienes la consulta ahora?
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #9 (permalink)  
Antiguo 19/10/2009, 07:51
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: no me deja leer una imagen de una tabla e insertarla en otra

Al insertar en la primera tabla, en lugar de usar addslashes usa mysql_real_escape_string.

Y para volver a insertar en otra tabla, debes nuevamente escapar el dato usando mysql_real_escape_string.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #10 (permalink)  
Antiguo 19/10/2009, 07:58
Avatar de JOSANCIN  
Fecha de Ingreso: septiembre-2008
Ubicación: huesca
Mensajes: 298
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: no me deja leer una imagen de una tabla e insertarla en otra

Hola, perdona, no te entiendo, la consulta sigue igual:

conectar("bd");
$resultado=consultar("select * from provisional");

while($fila=mysql_fetch_array ($resultado)){

$a=$fila["imagen"]; //imagen es el nombre del campo donde guardo la imagen

$tabla="definitiva";
$b="insert into $tabla (id,imagen) values ('','$a')";
mysql_query($b);

}

Me sigue pasando lo mismo, el mismo error:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 2

Gracias por la ayuda
  #11 (permalink)  
Antiguo 19/10/2009, 08:01
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: no me deja leer una imagen de una tabla e insertarla en otra

Lo que te indicaron al principio. Si tienes el ID autoincrementable no debes colocar entre comillas ese campo, en todo caso colocalo NULL
Código mysql:
Ver original
  1. insert into $tabla (id,imagen) values (NULL,'$a')
Tambien haz lo que te indica David de usar mysql_real_escape_string
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #12 (permalink)  
Antiguo 19/10/2009, 08:13
Avatar de JOSANCIN  
Fecha de Ingreso: septiembre-2008
Ubicación: huesca
Mensajes: 298
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: no me deja leer una imagen de una tabla e insertarla en otra

Muchas gracias a los tres, lo que me ha funcionado es

sustituir addslashes por mysql_real_escape_string ambas veces

en vez de hacer $foto_reconvertida=addslashes($foto_reconvertida);

hago $foto_reconvertida=mysql_real_escape_string($foto_ reconvertida)

despues igual, cuando estoy leyendo la imagen de la tabla provisional y asigno el valor de la lectura en la variable $a ($a=$fila['imagen'] aplico mysql_real_escape_string haciendo

$a=mysql_real_escape_string ($a)

y funciona bien bien bien

QUE CONTENTO ESTOY, YUPIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII

MUCHAS GRACIAS A TODOS, ME TOMO LA TARDE DE FIESTA PARA CELEBRARLO
BIEN BIEN BIEN
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 18:23.