Porque no me guarda en la BD

v3sTi4

Estoy un poco sorprendido y ya cansado de darle vueltas a una cosa donde no veo ningún fallo, pero debe de haberlo porque sinó iría...

Estoy insertando datos en la bd.

Imaginemos que tengo varios datos a insertar, pero me da problemas con 1 sólo dato.

Antes de todo, decir que los datos que inserto previamente los guardo en variables. para ser todo más fácil.

mysql_query("INSERT INTO mensajero (nick,mensaje,adjuntos) VALUES ('$nombre','$mensaje','$img')",$conecta);

Hasta aquí todo bien, me inserta el nombre y el mensaje pero no $img.

La sorpresa y duda que tengo es que el contenido de esa variable es este:
$img = "< img src='files/$nuevonombre' border='0' width='500' height='300' > ";

Algo en esa variable debe de estar mal escrito porque no me guarda en la bd.

Sin embargo si hago:
$img = "hola";

Ese hola si me lo guarda en la bd. Por lo que supongo que el fallo está en la variables $img:
$img = "< img src='files/$nuevonombre' border='0' width='500' height='300' >";

¿Alguna ayuda?
Gracias

PD: Los espacios en < img no existen en realiad, los he puesto aquí porque sino el foro me interpreta el codigo.

cabron

Pues así de buenas a primeras, creo que es un problema de comillas mal escapadas:

mysql_query("INSERT INTO mensajero (nick,mensaje,adjuntos) VALUES ('$nombre','$mensaje','$img' ) ",$conecta);

Quedaría así despues de evaluarse la expresión:

mysql_query("INSERT INTO mensajero (nick,mensaje,adjuntos) VALUES ('$nombre','$mensaje','< img src='files/$nuevonombre' border='0' width='500' height='300' > )",$conecta);

Así que en cuanto llegase a 'files te daría problemas, por que esa comilla cerraría la anterior.

A lo mejor me equivoco, hace mucho que no toco php y no me acuerdo de como iba lo del magic quotes y todo eso, pero diría que tu problema está ahí.

v3sTi4

#2
Ahí no está el problema:
mysql_query("INSERT INTO mensajero (nick,mensaje,adjuntos) VALUES ('$nombre','$mensaje','$img' ) ",$conecta);

Me explico.
El problema esta en la variable $img

Utilizando esa expresión de insertar datos a la BD (que es correcta), la variable $img no me la inserta cuando tiene la expresión "< img ..." en cambio cuando
$img = < b>hola </b >; Esto útlimo si me lo inserta.

Gracias

BlisZ

me parece que #2 ha acertado, es por las comillas

prueba $img = addslashes($img);

edito: y cuando quieras imprimir el contenido usa stripslashes($img);

http://es2.php.net/manual/en/function.stripslashes.php

http://es2.php.net/manual/en/function.addslashes.php

v3sTi4

#4 Esa es la solución.

Gracias !!!

#2 tenías razón, pero no te llegué a comprender en que fallaban las comillas.

Salu2

Usuarios habituales

  • v3sTi4
  • BlisZ
  • cabron