Foros del Web » Programando para Internet » PHP »

Tengo un array...para insertar en bd

Estas en el tema de Tengo un array...para insertar en bd en el foro de PHP en Foros del Web. Hola amigos, de nuevo buscando ayuda... Tengo el siguiente array: $array={'es','una','prueba'} ///siempre 3 datos, llegados de un formulario Deseo ingresar a la BD, intento de ...
  #1 (permalink)  
Antiguo 31/03/2009, 13:22
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 16 años, 4 meses
Puntos: 2
Sonrisa Tengo un array...para insertar en bd

Hola amigos, de nuevo buscando ayuda...

Tengo el siguiente array:
$array={'es','una','prueba'} ///siempre 3 datos, llegados de un formulario

Deseo ingresar a la BD, intento de varias formas y ninguna me funciona:
Código php:
Ver original
  1. <!-- for($i=0;$i<=2;$i++)
  2.   {
  3. $sql1 = "INSERT INTO catalogo(id,dato1,dato2,dato3) VALUES('','$array[0]','$array[1]','$array[2]')";
  4. mysql_query($sql1) or die( "Error: " . mysql_error());
  5.   } -->
para llegar a guardar, esto por ejemplo:
BD/Tabla:catalogo
id: 00001 ///es autoincrement
dato1: es
dato2: una
dato3: prueba

A ver si alguien me da una ayudita, gracias.
  #2 (permalink)  
Antiguo 31/03/2009, 13:31
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Tengo un array...para insertar en bd

mmm... pero si ya tienes la respuesta!

osea... no es necesario el bucle que haces...

Código PHP:
$foo = array('candy''bar''does');
$sql "INSERT INTO tabla(a,b,c) VALUES('$foo[0]', '$foo[1]', '$foo[2]')"
o, tienes un error??
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 31/03/2009, 13:31
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Tengo un array...para insertar en bd

Lee: http://www.forosdelweb.com/f18/como-...s-bien-588701/

Saludos.
  #4 (permalink)  
Antiguo 31/03/2009, 13:41
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Tengo un array...para insertar en bd

Gracias amigo pateketrueke,
no es que sea un error, pero en mi bd no graba lo que se quiere...
1. puse los datos para el ejemplo, pero el arreglo son datos binarios de imagenes
2. necesito realizar el for($i=0;$i<=2;$i++)
3. y lo que graba en bd es: [BLOB - 1 Bytes]

Agradesco mucho me puedas seguir ayudando, gracias otra vez.
  #5 (permalink)  
Antiguo 31/03/2009, 13:45
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Tengo un array...para insertar en bd

antes de ejecutar tu consulta de SQL, imprimela... y analiza si esta bien escrita!

si lo ignoras, imprime el SQL generado para analizarlo aquí, o bien ejecutalo en phpMyAdmin

aunque, ¿es necesario el for?? ¿para que???
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 31/03/2009, 13:50
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Tengo un array...para insertar en bd

Efectivamente amigo, realize las impresiones de las variables:
este es para el PRIMER valor del array:
29453
/tmp/php0mmNsy
Nombre_de_Imagen 038.jpg
ÿØÿà\0JFIF\0\0`\0`\0\0ÿáAÑExif\0\0II*\0\0\0\0 \0\0\0\0\0ò\0\0\0\0)\0\0\0\0\0\0\0\0 \02\0\0\0\0\0\0:\0\0(\0\0\0\0\0\0\01\0 )\0\0\0B\0\0\0\0\0\0\0\0\0i‡\0\0\0\0t\0\0 ¤\0\0\0\0\0\0\0\0¤\0\0\0\0\0\0\0\0¤\0\0\0 \0\0\0\0\0¤\0\0\0\0l\0\0¤\0\0\0\0$\0\0\0¤ \0\0\0\0\0\0\0\0¤\0\0\0\0\0\0\0¤\0\0\0\0\0 \0\0\0 ¤\0\0\0\0\0\0\0\0 ¤\0\0\0\0\0\0\0\0 ¤\0\0\0\0\0\0\0\0Æ4\0\0EASTMAN...y sigue mas de este tipo

El sql es:
Código php:
Ver original
  1. <!-- $sql1 = "INSERT INTO catalogo(foto,foto1,foto2,mime) VALUES('$contenido[0]','$contenido[1]','$contenido[2]','$tipo')";
  2. mysql_query($sql1) or die( "Error: " . mysql_error()); -->

Gracias,
  #7 (permalink)  
Antiguo 31/03/2009, 14:01
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Tengo un array...para insertar en bd

me refería al SQL generado

Código PHP:
$sql1 "INSERT INTO catalogo(foto,foto1,foto2,mime) VALUES('$contenido[0]','$contenido[1]','$contenido[2]','$tipo')";

echo 
$sql1
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #8 (permalink)  
Antiguo 31/03/2009, 14:09
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Tengo un array...para insertar en bd

Ah oka,
el insert (INSERT INTO catalogo(foto,foto1,foto2,mime) VALUES('$contenido[0]','$contenido[1]','$contenido[2]','$tipo')) en phpMyAdmin imprime:
Filas insertadas: 1
Se insertó la ID de la fila: 210 (La consulta tardó 0.3517 seg)

y en DB se observa:
campo:
id ....00210 //id autoincrement
foto ....[BLOB - 13 Bytes]
foto1 ....[BLOB - 13 Bytes]
foto2 ....[BLOB - 13 Bytes]
mime ....$tipo
  #9 (permalink)  
Antiguo 31/03/2009, 14:10
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Tengo un array...para insertar en bd

si, si...

pero, cual es resultado/valor impreso de $sql1 ¿??
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #10 (permalink)  
Antiguo 31/03/2009, 14:21
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Tengo un array...para insertar en bd

Disculpa por la ignorancia pateketrueke, pero no entiendo cual resultado es el k te refieres.

Esto veo en phpMyAdmin:
consulta SQL:
INSERT INTO catalogo( foto, foto1, foto2, mime )
VALUES (
'$contenido[0]', '$contenido[1]', '$contenido[2]', '$tipo'
)

y mas arribita esto:
Filas insertadas: 1
Se insertó la ID de la fila: 211 (La consulta tardó 0.0003 seg)
  #11 (permalink)  
Antiguo 31/03/2009, 14:29
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Tengo un array...para insertar en bd

mmm...

osea, en lugar de hacer tu mysql_query($sql1) has un echo($sql1)

Código PHP:
$sql1 "INSERT INTO catalogo(foto,foto1,foto2,mime) VALUES('$contenido[0]','$contenido[1]','$contenido[2]','$tipo')";
//mysql_query($sql1) or die( "Error: " . mysql_error());
echo $sql1
para ver que valores se asignaron a tu consulta de SQL.... no la ejecutes, solo imprimela con PHP ... en ves de insertarla...

(y muestra el resultado aquí)

__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #12 (permalink)  
Antiguo 31/03/2009, 14:42
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Tengo un array...para insertar en bd

Oka pateketrueke,
esto es lo mencionado a la impresion: INSERT INTO catalogo(foto,foto1,foto2,mime) VALUES('ÿ','Ø','ÿ','image/pjpeg')

Saludos,
  #13 (permalink)  
Antiguo 31/03/2009, 14:46
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Tengo un array...para insertar en bd

bien, bien...

como se puede leer, entonces el INSERT funciona perfectamente...

pero, los datos .. ¿son correctos??

podrías explicar un poco mas los tipos de columna de tu tabla... ??

(haz un var_dump() de tu variable $contenido y posteas el resultado)

o bien, que quieres hacer exactamente...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #14 (permalink)  
Antiguo 31/03/2009, 14:55
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Tengo un array...para insertar en bd

Esto es lo que te imprime la consulta?
Código:
INSERT INTO catalogo(foto,foto1,foto2,mime) VALUES('ÿ','Ø','ÿ','image/pjpeg')
Si es así puede ser que $contenido sea un string y al leerlo como $contenido[0], $contenido[1], etc. estas leyendo el caracter, de la cadena y no es un array.

Saludos.
  #15 (permalink)  
Antiguo 31/03/2009, 15:06
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Tengo un array...para insertar en bd

A ver explico:
1. Los campos de mi tabla catalogo: foto, foto1 y foto2 son de tipo longblob
2. Al dar var_dump($contenido) me sale un monton de codigo raro, este es para la primera:
string(42381) "ÿØÿà\0JFIF\0\0`\0`\0\0ÿáAÑExif\0\0II*\0\0\0\ 0\0\0\0\0\0ò\0\0\0\0)\0\0\0\0\0\0\0\ 0\02\0\0\0\0\0\0:\0\0(\0\0\0\0\0\0\01\ 0)\0\0\0B\0\0\0\0\0\0\0\0\0i‡\0\0\0\0t\0\ 0¤\0\0\0\0\0\0\0\0¤\0\0\0\0\0\0\0\0¤\0\0\ 0\0\0\0\0\0¤\0\0\0\0l\0\0¤\0\0\0\0$\0\0\0¤ \0\0\0\0\0\0\0\0¤\0\0\0\0\0\0\0¤\0\0\0\0\ 0\0\0\0 ¤\0\0\0\0\0\0\0\0 ¤\0\0\0\0\0\0\0\0 ¤\0\0\0\0\0\0\0\0Æ4\0\0EASTMAN KODAK COMPANY\0KODAK EASYSHARE C813 ZOOM DIGITAL CAMERA\0jà\0\0\0\0\0à\0\0\0\0\0KODAK EASYSHARE C813 ZOOM DIGITAL CAMERA\0\0\0\0\0\0 \0\0\0\0š‚\0\0\0\0¦\0\0‚\0\0\0\0®\0\0\"ˆ\ 0\0\0\0\0\0\0\'ˆ\0\0\0\0È\0\0\0\0\0\0\0\002 21\0\0\0\0¶\0\0\0\0\0\0Ê\0\0‘\0\0\0\0 \0’ \0\0\0\0Þ\0\0’\0\0\0\0æ\0\0’ \0\0\0\0î\0\0’\0\0\0\0ö\0\0’\0 ...creo cortarla aqui

Y al respecto de los datos que ingresan al array los recojo de un formulario:
Código php:
Ver original
  1. <!-- <form name="frmimage" method="post" enctype="multipart/form-data" action="insertarBlob.php">
  2. <table>
  3. <tr>
  4. <td align="right" width="19%">Foto 1:</td><td width="61%"><input type="file" size="51" name="foto[]"></td>
  5. </tr>
  6. <tr>
  7. <td align="right" width="19%">Foto 2:</td><td width="61%"><input type="file" size="51" name="foto[]"></td>
  8. </tr>
  9. <tr>
  10. <td align="right" width="19%">Foto 3:</td><td width="61%"><input type="file" size="51" name="foto[]"></td>
  11. </tr> -->
No se que mas puedo hacer al respecto, gracias
  #16 (permalink)  
Antiguo 31/03/2009, 15:09
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Tengo un array...para insertar en bd

el problema, como sugiere GatorV ... es que $contenido no es array()

¿donde y como asignas estas variables??

coloca el código necesario
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #17 (permalink)  
Antiguo 31/03/2009, 15:11
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Tengo un array...para insertar en bd

Pues ese es el problema $contenido es el contenido de una imagen en binario, no es un array, por eso es que no se inserta correctamente.

Si tu te das cuenta tu envias en tu formulario $foto[], ese ya es un array, necesitas ir agregando los datos en otro array, algo así:
Código php:
Ver original
  1. $fotos = array();
  2. foreach($_FILES['foto']['tmp_name'] as $foto) {
  3.        $fotos[] = addslashes(file_get_contents($foto));
  4. }

Con eso en $fotos[] ya tienes un array con los contenidos de 1 o n fotos y los puedes insertar ya correctamente como $fotos[0], $fotos[1] y $fotos[2].

Saludos.
  #18 (permalink)  
Antiguo 31/03/2009, 15:34
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Tengo un array...para insertar en bd

Entiendo lo que me quieres decir GatorV...
pero como que me confunde con mi codigo original, pues tonces dejo el codigo original para ver en que parte es donde tendria que modificarla:
Código php:
Ver original
  1. <!-- <?php
  2. $postback = (isset($_POST["enviar"])) ? true : false;
  3. if($postback)
  4. {
  5.   error_reporting(E_ALL);
  6.   include('conec.php');
  7.   conectarse();
  8.   for($i=0;$i<=2;$i++)
  9.   {
  10.     $archivo = $_FILES["foto"]["tmp_name"][$i];
  11.     $tamanio = $_FILES["foto"]["size"][$i];
  12.     $nombre = $_FILES["foto"]["name"][$i];
  13.     $tipo = $_FILES["foto"]["type"][$i];
  14.     $mimetipos = array("image/jpeg", "image/pjpeg", "image/gif", "image/png");
  15.     if(!in_array($tipo,$mimetipos))
  16.         die("El archivo que subiste no es una imagen válida");
  17.     if( $archivo != "" ){
  18.         $fp = fopen($archivo,"rb");
  19.         $contenido = fread($fp, $tamanio);
  20.         $contenido = addslashes($contenido);
  21. $sql1 = "INSERT INTO catalogo(foto,foto1,foto2,mime) VALUES('$contenido[0]','$contenido[1]','$contenido[2]','$tipo')";
  22. echo"<br>";
  23. echo $sql1;
  24. //mysql_query($sql1) or die( "Error: " . mysql_error());
  25.         fclose($fp);
  26.         @unlink($contenido);
  27.     }else{
  28.     echo "falta algun dato";
  29.     }
  30.   }
  31.   echo "<h2>Foto guardada correctamente en la base de datos</h2>";
  32. }
  33. exit();
  34. ?> -->
  #19 (permalink)  
Antiguo 31/03/2009, 15:37
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Tengo un array...para insertar en bd

Pues ahí en las lineas 18-20, tienes el error claro lees en $contenido la variable y esta es un string y luego la insertas como un array.

Tienes que re-adaptar tu código para almacenar las fotos y luego enviar el Query, lo mejor es hacerlo parecido a como te indique en el código que expuse más arriba.

Saludos.
  #20 (permalink)  
Antiguo 31/03/2009, 16:39
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Tengo un array...para insertar en bd

Muchisimas gracias tanto a pateketrueke y GatorV, estoy contento porque ya me despeje la gran nube negra k tenia ("...el error claro lees en $contenido la variable y esta es un string y luego la insertas como un array...").

Es por esa la razon del problema, mas bien si me permiten quisiera dejar ya saneado este tema y dirigirme al link original que es basicamente lo que sigue "Subir mas archivos en bd"...muchas gracias otra vez amigos.
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 12:51.