Foros del Web » Programando para Internet » PHP »

Grabar contenido de un array

Estas en el tema de Grabar contenido de un array en el foro de PHP en Foros del Web. Agradeciendo de antemano su ayuda. Como Novato en Programación PHP Tengo la siguiente duda al tratar de grabar los datos de un array a una ...
  #1 (permalink)  
Antiguo 15/03/2013, 20:00
 
Fecha de Ingreso: noviembre-2012
Mensajes: 7
Antigüedad: 11 años, 5 meses
Puntos: 0
Grabar contenido de un array

Agradeciendo de antemano su ayuda.
Como Novato en Programación PHP Tengo la siguiente duda al tratar de grabar los datos de un array a una tabla de mysql.
Tengo el siguiente código que trabaja bien, pero no se si existe algo mejor o mas directo para pasar los datos a la tabla de mysql.
Hacer un insert por cada fila en mi arreglo se me hace un poco rudimentario, pero la verdad soy novato, pero e aprendido aquí en el foro muchas formas de simplificar algunos códigos que tenia por culpa de mi neofites.



mysql_query("DELETE FROM aud_certificados WHERE idauditor = '{$_POST['idbuscar']}'", $link);
foreach ($certificaciones as $valor){
$idauditor = $valor[idauditor ];
$comentario = $valor[comentario ];
$idnorma = $valor[idnorma];

mysql_query("insert into aud_certificados (idauditor, comentario , idnorma) VALUES ('$idauditor','$comentario', '$idnorma')", $link);
}
unset($valor);
  #2 (permalink)  
Antiguo 15/03/2013, 20:32
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 12 años, 10 meses
Puntos: 181
Respuesta: Grabar contenido de un array

Pues lo que te queda es concatenas datos:

Código PHP:
$cadena="";
foreach (
$certificaciones as $valor){
$idauditor $valor[idauditor ];
$comentario $valor[comentario ];
$idnorma $valor[idnorma];
$cadena.="('$idauditor','$comentario','$norma'),";
}
//ojo yo pongo aca comillas como en tu ejemplo, pero si $idautor es numerico recuerda que no debe llevar comillas, es solo un ejemplo basado en el tuyo 
Al final tendras una cadena a la cual deberia quedar como algo asi:

Código MySQL:
Ver original
  1. INSERT INTO tabla (campo1, campo2, campo3) VALUES
  2. (v1_1, v1_2, v1_3),
  3. (v2_1, v2_2, v2_3),
  4. (v3_1, v3_2, v3_3);

Solo seria que a $cadena le reemplazaras la ultima coma por un punto y coma. Echale una mirada a las funciones de cadena que ahora mismo no recuerdo como hacerlo para que solo te haga un reemplazo. Investiga en str_replace en el manual para ver si solo se puede reemplazar una vez, sino se puede con str_replace en las funciones aparecera una opción, por fa investiga por tu cuenta.

Por ultimo concatenas la consulta.

Código PHP:
$consulta="insert into aud_certificados (idauditor, comentario , idnorma) VALUES "
$consulta_total=$consulta.$cadena
__________________
Blog de humor http://elcuasatar.net63.net/
  #3 (permalink)  
Antiguo 15/03/2013, 20:33
 
Fecha de Ingreso: septiembre-2011
Mensajes: 219
Antigüedad: 12 años, 7 meses
Puntos: 31
Respuesta: Grabar contenido de un array

Desde el punto de vista práctico no esta mal lo que haces, desde el punto de optimización te conviene usar pdo, un ejemplo de como sería insertar un array completo con una sola query sería asi:

Código PHP:
Ver original
  1. $stmt = $pdo->prepare('INSERT INTO foo VALUES(:a, :b, :c)');
  2. foreach($data as $item)
  3. {
  4.     $stmt->bindValue(':a', $item[0]);
  5.     $stmt->bindValue(':b', $item[1]);
  6.     $stmt->bindValue(':c', $item[2]);
  7.     $stmt->execute();
  8. }

Aquí tienes alguna ayudas para comenzar con pdo, no te asustes, no es nada dificil e incluso te estarías preparando para cuando la librería mysql o mysqli deje de estar disponible en php (pronto).

http://www.mclibre.org/consultar/php...hp_db_pdo.html

Saludos
  #4 (permalink)  
Antiguo 15/03/2013, 20:38
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 12 años, 10 meses
Puntos: 181
Respuesta: Grabar contenido de un array

Ok, mientras estaba escribiendo mi aporte no alcance a comentar que debes limpiar las variables que ingresas a la base de datos porque te pueden inyectar codigo malicioso. Tal y como te lo propone cachusan es una buena opción y te la recomiendo que tambien es otra alternativa valida. Ambos métodos son igual de validos, aparte que con pdo ya internamente te limpia los datos.

p.s. Con esta función podrias reemplazar solo una parte de la cadena para el reemplazo por si te interesa:

http://www.php.net/manual/es/functio...tr-replace.php
__________________
Blog de humor http://elcuasatar.net63.net/

Última edición por cuasatar; 15/03/2013 a las 20:54
  #5 (permalink)  
Antiguo 16/03/2013, 13:02
 
Fecha de Ingreso: noviembre-2012
Mensajes: 7
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Grabar contenido de un array

Gracias por sus comentarios, le daré un vistazo a PDO, mucho de mi código funciona desde un punto de vista practico, pero me interesa optimizar mi código.

Muchas gracias.

Etiquetas: contenido, mysql, 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 18:41.