Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] ¿Qué no funciona en este código, debería subir datos de imagen y actualizar campos?

Estas en el tema de ¿Qué no funciona en este código, debería subir datos de imagen y actualizar campos? en el foro de PHP en Foros del Web. $reqlen = strlen ($large_image_name); if ($reqlen > 0) { require("connect_db.php"); $meter = @mysql_query('INSERT INTO images (img_name, id_user) values ("'.mysql_real_escape_string($large_image_name."." .$file_ext).'", "'.mysql_real_escape_string($id_user).'")'); //Hasta aquí funciona. Lo ...
  #1 (permalink)  
Antiguo 10/04/2014, 04:20
Avatar de AngelMarine  
Fecha de Ingreso: enero-2014
Ubicación: Madrid
Mensajes: 79
Antigüedad: 10 años, 10 meses
Puntos: 0
Pregunta ¿Qué no funciona en este código, debería subir datos de imagen y actualizar campos?

$reqlen = strlen ($large_image_name);
if ($reqlen > 0) {
require("connect_db.php");

$meter = @mysql_query('INSERT INTO images (img_name, id_user) values ("'.mysql_real_escape_string($large_image_name."." .$file_ext).'", "'.mysql_real_escape_string($id_user).'")');

//Hasta aquí funciona.

Lo siguiente no:

$meter2 = @mysql_query('UPDATE users SET profile_photo="'.mysql_real_escape_string($large_i mage_name.".".$file_ext).'" WHERE email="$email"');
}

$email está definido, ya lo he probado.
  #2 (permalink)  
Antiguo 10/04/2014, 04:28
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: ¿Qué no funciona en este código, debería subir datos de imagen y actualiza

No te da un error? Has mirado como se construye tu query

Código PHP:
Ver original
  1. echo 'UPDATE users SET  profile_photo="'.mysql_real_escape_string($large_i  mage_name.".".$file_ext).'" WHERE email="$email"';

solo cambiando los delimitadores....


Código PHP:
Ver original
  1. $meter2 = @mysql_query("UPDATE users " .
  2.                  "SET profile_photo='".mysql_real_escape_string($large_i mage_name.'.'.$file_ext)."' " .
  3.                  "WHERE email='".$email."'");
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 10/04/2014, 05:31
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: ¿Qué no funciona en este código, debería subir datos de imagen y actualiza

Consejo, @AngelMarine: Cuando estés en etapa de desarrollo NUNCA uses el "@" para suprimir las salidas. Eso evitará que veas los errores de ejecución, y si no los ves... ¿Como sabras qué está pasando?

Ese es, a mi entender, un vicio de muchos programadores, que parecen suponer que siempre se hacen bien las cosas, y no es así.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 10/04/2014, 06:10
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: ¿Qué no funciona en este código, debería subir datos de imagen y actualiza

Gran consejo @gnzsoloyo... el único sentido de esa "@" es ocultar al usuario los mensajes de error del sistema, que suelen salir de forma poco elegante. Para evitar el feo de lanzar mensajes no formateados es mucho mejor hacer un buen tratamiento de excepciones try{}catch{} donde se puede formatear el mensaje de error o incluso redirigir el flujo del programa a algo que sortee o corrija el error.....

Pero sobre todo en tiempo de programación NUNCA autoocultarse información.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #5 (permalink)  
Antiguo 10/04/2014, 06:26
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: ¿Qué no funciona en este código, debería subir datos de imagen y actualiza



Me gustan las Try{}Catch{}... Permiten hacer códigos controlados, depurables.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 10/04/2014, 10:38
Avatar de AngelMarine  
Fecha de Ingreso: enero-2014
Ubicación: Madrid
Mensajes: 79
Antigüedad: 10 años, 10 meses
Puntos: 0
Exclamación Respuesta: ¿Qué no funciona en este código, debería subir datos de imagen y actualiza

Cita:
Iniciado por quimfv Ver Mensaje
No te da un error? Has mirado como se construye tu query

Código PHP:
Ver original
  1. echo 'UPDATE users SET  profile_photo="'.mysql_real_escape_string($large_i  mage_name.".".$file_ext).'" WHERE email="$email"';

solo cambiando los delimitadores....


Código PHP:
Ver original
  1. $meter2 = @mysql_query("UPDATE users " .
  2.                  "SET profile_photo='".mysql_real_escape_string($large_i mage_name.'.'.$file_ext)."' " .
  3.                  "WHERE email='".$email."'");
He hecho ambas cosas, quitar @ y cambiando delimitadores, y no, no funciona, gracias de todas formas por la ayuda, dime, ¿Habrá otra manera de actualizar la tabla?
  #7 (permalink)  
Antiguo 10/04/2014, 10:47
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: ¿Qué no funciona en este código, debería subir datos de imagen y actualiza

Cita:
Iniciado por AngelMarine Ver Mensaje
He hecho ambas cosas, quitar @ y cambiando delimitadores, y no, no funciona, gracias de todas formas por la ayuda, dime, ¿Habrá otra manera de actualizar la tabla?
No te salgas del problema. Todavía no has resuelto el tema.
¿Pusiste el echo?
¿Qué te mostró?

Postea el resultado de ese:
Código PHP:
echo 'UPDATE users SET  profile_photo="'.mysql_real_escape_string($large_image_name.".".$file_ext).'" WHERE email="$email"'
Desde ya te digo que yo estoy viendo a simple vista un error de lógica y sintaxis.
Mira, supongamos que cargo las variables, y ejecuto solamente la parte bássica sin la funcion que pones:
Código PHP:
$large_image_name "abcdefghijklmnopqrstuvwxyz";
$file_ext "123";
$email "[email protected]";

echo 
'UPDATE users SET  profile_photo="'.$large_image_name.".".$file_ext.'" WHERE email="$email"'
Eso me da como resultado esto:
Código SQL:
Ver original
  1. UPDATE users SET  profile_photo="abcdefghijklmnopqrstuvwxyz.123" WHERE email="$email"
¿Te parece bien?
Bueno, no, esta mal. Eso te dará un error de ejecución en MySQL, porque debería ser así:
Código SQL:
Ver original
  1. UPDATE users SET  profile_photo='abcdefghijklmnopqrstuvwxyz.123' WHERE email='[email protected]'
Es decir, la construcción de la sentencia está mal hecha.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 10/04/2014 a las 11:13
  #8 (permalink)  
Antiguo 10/04/2014, 11:10
Avatar de AngelMarine  
Fecha de Ingreso: enero-2014
Ubicación: Madrid
Mensajes: 79
Antigüedad: 10 años, 10 meses
Puntos: 0
Exclamación Respuesta: ¿Qué no funciona en este código, debería subir datos de imagen y actualiza

Cita:
Iniciado por gnzsoloyo Ver Mensaje
No te salgas del problema. Todavía no has resuelto el tema.
¿Pusiste el echo?
¿Qué te mostró?

Postea el resultado de ese:
Código PHP:
echo 'UPDATE users SET  profile_photo="'.mysql_real_escape_string($large_image_name.".".$file_ext).'" WHERE email="$email"'
Desde ya te digo que yo estoy viendo a simple vista un error de lógica y sintaxis.
Mira, supongamos que cargo las variables, y ejecuto solamente la parte bássica sin la funcion que pones:
Código PHP:
$large_image_name "abcdefghijklmnopqrstuvwxyz";
$file_ext "123";
$email "[email protected]";

echo 
'UPDATE users SET  profile_photo="'.$large_image_name.".".$file_ext.'" WHERE email="$email"'
Eso me da como resultado esto:
Código SQL:
Ver original
  1. UPDATE users SET  profile_photo="abcdefghijklmnopqrstuvwxyz.123" WHERE email="$email"
¿Te parece bien?
Bueno, no, esta mal. Eso te dará un error de ejecución en MySQL, porque debería ser así:
Código SQL:
Ver original
  1. UPDATE users SET  profile_photo='abcdefghijklmnopqrstuvwxyz.123' WHERE email='[email protected]'
Es decir, la construcción de la sentencia está mal hecha.


Si, da esto:

UPDATE users SET profile_photo="resize_1397.jpg" WHERE email="$email"


He quitado el WHERE (ha conciencia, sabía que modificaría el campo profile_photo para todos), y efectivamente ha funcionado, ha puesto el nombre de la imagen en todos los campos;
  #9 (permalink)  
Antiguo 10/04/2014, 11:13
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: ¿Qué no funciona en este código, debería subir datos de imagen y actualiza

Ten mucho cuidado con el uso de comillas (") en MySQL, porque sólo si el servidor está configurado para ello, tomará el contenido como cadenas de texto. de lo contrario las interpretará como nombres de objetos de base.
La recomendación es porque por defecto se usan para nombres de objetos.
Es preferible que uses apóstrofos para las cadenas de texto. Es más seguro.

Yo te sugiero, por ejemplo:
Código PHP:
Ver original
  1. $large_image_name = "abcdefghijklmnopqrstuvwxyz";
  2. $file_ext = "123";
  3. $email = "[email protected]";
  4.  
  5. echo "UPDATE users SET profile_photo='".addslashes("$large_image_name".".$file_ext")."' WHERE email='$email'";

Lo que te dará como resultado:
Código SQL:
Ver original
  1. UPDATE users SET profile_photo='abcdefghijklmnopqrstuvwxyz.123' WHERE email='[email protected]'
que sí es correcto.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #10 (permalink)  
Antiguo 10/04/2014, 11:24
Avatar de AngelMarine  
Fecha de Ingreso: enero-2014
Ubicación: Madrid
Mensajes: 79
Antigüedad: 10 años, 10 meses
Puntos: 0
Exclamación Respuesta: ¿Qué no funciona en este código, debería subir datos de imagen y actualiza

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Ten mucho cuidado con el uso de comillas (") en MySQL, porque sólo si el servidor está configurado para ello, tomará el contenido como cadenas de texto. de lo contrario las interpretará como nombres de objetos de base.
La recomendación es porque por defecto se usan para nombres de objetos.
Es preferible que uses apóstrofos para las cadenas de texto. Es más seguro.

Yo te sugiero, por ejemplo:
Código PHP:
Ver original
  1. $large_image_name = "abcdefghijklmnopqrstuvwxyz";
  2. $file_ext = "123";
  3. $email = "[email protected]";
  4.  
  5. echo "UPDATE users SET profile_photo='".addslashes("$large_image_name".".$file_ext")."' WHERE email='$email'";

Lo que te dará como resultado:
Código SQL:
Ver original
  1. UPDATE users SET profile_photo='abcdefghijklmnopqrstuvwxyz.123' WHERE email='[email protected]'
que sí es correcto.
Gracias, ya funciona. También he hecho una modificación en el email, ahora compara los id´s, y he puesto el nombre de la tabla delante de user.

$meter2 = mysql_query("UPDATE users SET profile_photo='".addslashes("$large_image_name".". $file_ext")."' WHERE users.user='$id_user'");
  #11 (permalink)  
Antiguo 11/04/2014, 01:46
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: ¿Qué no funciona en este código, debería subir datos de imagen y actualiza

La solución de los delimitadores es la que te di yo en primera instancia....

Fijate que tu mismo nos dices porque no funcionaba


Cita:
Si, da esto:

UPDATE users SET profile_photo="resize_1397.jpg" WHERE email="$email"
No esta traduciendo la variable $email a su contenido....no?


Esta seguro que asi no funcionava
Código PHP:
Ver original
  1. $meter2 = @mysql_query("UPDATE users " .
  2.                  "SET profile_photo='".mysql_real_escape_string($large_i mage_name.'.'.$file_ext)."' " .
  3.                  "WHERE email='".$email."'");


UPDATE users SET profile_photo='resize_1397.jpg' WHERE email='<aqui el valor de $email>'
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 11/04/2014 a las 01:53

Etiquetas: php+bd+mysql
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 14:05.