Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Insertar a BD con Json y PHP

Estas en el tema de Insertar a BD con Json y PHP en el foro de PHP en Foros del Web. Buenas, tengo un codigo para recibir archivos json y a traves de php insertarlo en BD, cuando recibo un registro lo cojo bien, el problema ...
  #1 (permalink)  
Antiguo 11/01/2013, 07:03
Avatar de 60NZ4  
Fecha de Ingreso: mayo-2012
Ubicación: 404 Not found
Mensajes: 112
Antigüedad: 11 años, 10 meses
Puntos: 2
Insertar a BD con Json y PHP

Buenas, tengo un codigo para recibir archivos json y a traves de php insertarlo en BD, cuando recibo un registro lo cojo bien, el problema es cuando vienen varias lineas.

Creo que es porque no hago bien la estructura del JSON, lo hago asi :

Código XML:
Ver original
  1. [{"COD":"1","campo1":"descripcion1","campo2":"descripcion2"}{"COD":"2","campo1":"descrip1","campo2":"descrip2"}]

y aqui adjunto mi codigo en php:

Código PHP:
Ver original
  1. $data=json_decode($body);
  2.  
  3. for ($i=0;$i<count($data);$i++)
  4.                 {
  5.                         $cod = $data[$i] -> COD;
  6.                         $campo1= $data[$i] -> campo1;
  7.                         $campo2 = $data[$i] -> campo2;
  8.                        
  9.                                        
  10.                
  11.                 $insert = "INSERT INTO tabla    VALUES
  12.                         ('".$cod."','".$campo1."','".$campo2."')";
  13.                
  14.                
  15.                
  16.                 /*Realizamos el insert*/
  17.                     $result=mysql_query($insert,$con);
  18.                     if (!$result) {
  19.                             echo'Error al realizar la inserccion: ';
  20.                             echo mysql_error();
  21.                     }else{
  22.                         /*Si el insert se realiza*/
  23.                         echo'Inserccion en tabla realizada con exito';
  24.                     }
  25.                 }

en $data, deberia haber 1 registro por cada linea del json, cuando hay mas de una esta vacio

espero que puedan ayudarme

Un saludo
__________________
Nadie nace aprendido, un experto es simplemente alguien que ya ha cometido muchos errores
  #2 (permalink)  
Antiguo 11/01/2013, 08:21
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: Insertar a BD con Json y PHP

Pues en efecto el JSON está mal formado, pero el código que aquí muestras no tiene nada que ver, ya que funciona mientras el JSON sea correcto.

Ahora, si esperas a que adivinemos como creas el JSON y como lo envias, pues... ¿que piensas?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 11/01/2013, 08:27
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 12 años, 10 meses
Puntos: 76
Respuesta: Insertar a BD con Json y PHP

Hola

como te indica el compañero, el JSON esta mal formado, checa como debe quedar:

Código PHP:
Ver original
  1. $array ='[{"COD":"1","campo1":"descripcion1","campo2":"descripcion2"},{"COD":"2","campo1":"descrip1","campo2":"descrip2"}]';
  2. $convert = json_decode($array);
  3.  
  4. var_dump($convert);
  #4 (permalink)  
Antiguo 14/01/2013, 03:08
Avatar de 60NZ4  
Fecha de Ingreso: mayo-2012
Ubicación: 404 Not found
Mensajes: 112
Antigüedad: 11 años, 10 meses
Puntos: 2
Respuesta: Insertar a BD con Json y PHP

Buenas, he probado con ese formato en el JSON y me funciona perfectamente

muchas gracias a los dos.

Es una aplicacion que me han pedido en el trabajo, como se genere el JSON no es parte de lo que me han pedido, yo parto desde que lo recibo, y ya lo proceso


muchas gracias

un saludo
__________________
Nadie nace aprendido, un experto es simplemente alguien que ya ha cometido muchos errores

Etiquetas: bd, json, mysql, registro, tabla
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 20:32.