PHP - Subir imagenes

   
Vista:
Imágen de perfil de Tlecaster

Subir imagenes

Publicado por Tlecaster (3 intervenciones) el 10/02/2014 12:28:32
Buenas a tod@s!!!!

Tengo una base de datos en MySQL con unas cuantas tablas.
En una de las tablas (datos) tengo definido 1 campo de tipo BLOB
para poder almacenar imagenes en el.
El tema esta en que cuando elijo una imagen (leida en local), la paso
a binario y la variable que contiene la imagen en binario la subo a la
tabla (datos) no me lo hace y me devuelve el error 1064.
He buscado en la red el porque de este error y no logro entender
por que me lo hace a mi:
Pongo los datos:
- Nombre de la Base de datos: base
- Tabla en la Base de datos: datos
- Campo de la Tabla datos: imagen1 (tipo BLOB).

- Codigo que uso:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?
...
// leo la imagen en local y las paso a binario (aqui no me da ningun error)
$s_nombre = "datos/imagen1.jpg";
$s_tamano = filesize($s_nombre);
$m_s= fopen($s_nombre,"rb");
   $bin_s = fread($m_s, $s_tamano);
   $bin_s=addslashes($bin_s);
fclose($m_s);
// subo la imagen a la Base de Datos
$conecto= mysqli_connect("localhost", "usuario", "clave", "base");
$m = "INSERT INTO `base`.`datos` (,`imagen`) "VALUES ( ".$bin_a.")";
$aa = mysqli_query($conecto, $m);
if (!$aa){
 // Aqui me devuelve el error 1064
 echo "Error " . mysqli_errno($conecto) . "no se subio la imagen";
 exit;
}
mysqli_close($conecto);
...
?>

¿¿¿Alguien podria decirmeque es lo que hago mal???

Muchas gracias de antemano! un saludo!!!!!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
-1
Responder
Imágen de perfil de xve

Subir imagenes

Publicado por xve (5519 intervenciones) el 10/02/2014 17:43:39
Hola, veo un par de cosas que me llaman la atención en tu código...

En el insert:
1
$m = "INSERT INTO `base`.`datos` (,`imagen`) "VALUES ( ".$bin_a.")";
que es $bin_a¿?

Aparte de este posible error de escritura, hay una coma aqui (,`imagen`) que sobra y la variable del value, creo que tendria que ir entre comillas:
1
$m = "INSERT INTO `base`.`datos` (`imagen`) "VALUES ( '".$bin_a."')";

Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de tlecaster

Subir imagenes

Publicado por tlecaster (3 intervenciones) el 10/02/2014 23:06:08
Tienes razon, son un par de gazapos que se me han colado: $bin_a deberia ser $bin_s . Tambien la coma esa sobra, tienes razon es otro gazapo que se me ha colado. Y otro mas al lado de VALUE que tambien se me han colado unas ".
En cuanto a meter entre comillas la variable $bin_a
(que en relidad es $bin _s) no estoy de a cuerdo en que tenga que ir entre comillas ya que es un campo definido como BLOB y tengo entendido que van sin comillas, ya que la informacion que se almacena ahi es de tipo binario y no alfanumerico. Estoy en lo cierto?
- Reescribo la parte que tiene error:
$m = "INSERT INTO `base`.`datos` (`imagen`) VALUES ( " . $bin_s . ")";
Asi es como deberia de quedar segun mi criterio pero no entiendo por que me da error.

Gracias de antemano por vuestra colaboracion
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Subir imagenes

Publicado por xve (5519 intervenciones) el 11/02/2014 07:42:05
Yo siempre he puesto el valor entre comillas excepto cuando es un valor numérico y no he tenido nunca ningún problema...

Has probado a ejecutarlo ahora que parece que no tiene errores con y sin comillas?
Que error te da?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Tlecaster

Subir imagenes

Publicado por Tlecaster (3 intervenciones) el 12/02/2014 09:35:12
Si he probado y sigue dandome el mismo error.
El asunto es que si me bajo el XAMPP y ejecuto la query desde phpmyAdmin de XAMPP lo hace bien pero los caracteres que veo que pone en el campo BLOB de la imagen no son los mismo caracteres que veo yo cuando
convierto a binario la imagen y trato de subiarla. Creo que ahi es donde estriba la diferencia y no se que hacer.

He probado a definir le campo de la Base de datos como BLOB,LONGBLOB,TINYBLOB.... pero nada....
me da la sensacion que todo al convertir la imagen a binario, almacenarla en una variable e intentar subirla
a la base de datos no funciona. (De hecho es lo que me esta pasando.) con lo que no se si se puede
subir la imagen a la base de datos convirtiendola en HEXADECIMAL almacenandola en una variable y subirla como
texto......

en fin Help me please!

Gracias de ante mano
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar