Foros del Web » Programando para Internet » PHP »

Insertar un array en mysql sin foreach, es posible?

Estas en el tema de Insertar un array en mysql sin foreach, es posible? en el foro de PHP en Foros del Web. hola phperos Veran, recibo un array json en php de la siguiente forma: Código: Array ( [0] => stdClass Object ( [id] => 1 [clave] ...
  #1 (permalink)  
Antiguo 23/08/2013, 18:53
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 14 años
Puntos: 23
Insertar un array en mysql sin foreach, es posible?

hola phperos

Veran, recibo un array json en php de la siguiente forma:

Código:
Array ( 
	[0] => stdClass Object ( 
		[id] => 1 
		[clave] => 181 
		[producto] => LIBRETA SCRIBE 
		[cantidad] => 100 
	)
	[1] => stdClass Object (
		[id] => 2 
		[clave] => 200 
		[producto] => PINTURAS NORMA 32 PZA 
		[cantidad] => 800 
	)
)
Lo recibo así:

Código PHP:
$rows $_POST['json_string']; 

$data $json->decode($rows); //mi version de php no soporta aun la funcion json

$array = (array) $data;

print_r($array); 
Lo quisiera es de alguna forma insertar cada línea en la base de una sola vez, osea en un solo INSERT, ya que no se me hace óptimo hacer un foreach pidiendo un insert por fila.

Pero no se como hacerlo, si alguien ha podido lograr algo asi o tiene una idea le agradecere mucho su colaboracion.

Anteriormente pude insertar un array simple de un solo jalon pero ahora no se trata de un array simple, por que este contiene varias filas, que en la base deberia quedar algo asi:

Código:
id	clave	producto	       cantidad
1	181	LIBRETA SCRIBE         	100
2	200	PINTURAS NORMA 32 PZA 	800
gracias
  #2 (permalink)  
Antiguo 23/08/2013, 18:59
 
Fecha de Ingreso: julio-2013
Ubicación: México
Mensajes: 361
Antigüedad: 10 años, 9 meses
Puntos: 55
Respuesta: Insertar un array en mysql sin foreach, es posible?

Hola
Si sabes cuantas filas son, y seran fijas, puedes usar esto:

"INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);"

En caso contrario tendras que hacer un foreach().

Saludos
  #3 (permalink)  
Antiguo 26/08/2013, 08:08
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 14 años
Puntos: 23
Respuesta: Insertar un array en mysql sin foreach, es posible?

Hola Erick_MD9

Las filas cada vez serán variables, pueden ser 3 pueden ser 40 no hay numero fijo.

En vista que de ser así debo usar un foreach, arme el siguiente codigo, pero parece que estoy tomando mal el arreglo:

Código PHP:
$rows $_POST['json_string']; 

$data $json->decode($rows);

foreach(
$data as &$field){
    
$sql "INSERT INTO productos (clave, producto, cantidad) VALUES ($field.clave, $field.producto, $field.cantidad)";
    echo 
"sql <br />".$sql;
    
$result mysql_query($sql) or die(mysql_error());

El echo me devuelve:

Código:
sql 
INSERT INTO productos (clave, producto, cantidad) VALUES (Object id #2.clave, Object id #2.producto, Object id #2.cantidad)
Y me manda el siguiente error:


You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'id #2.clave, Object id #2.producto, Object id #2.cantidad' at line 1

Etiquetas: foreach, mysql, registro
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 23:21.