elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  insertar en 2 tablas distintas
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: insertar en 2 tablas distintas  (Leído 2,046 veces)
basickdagger


Desconectado Desconectado

Mensajes: 646


System.out.println("this is weird as fuck");


Ver Perfil
insertar en 2 tablas distintas
« en: 23 Mayo 2014, 18:48 pm »

hola tengo la siguiente duda
tengo 2 tablas a las cuales voy a insertarles informacion...

probe haciendo lo siguiente...


Código
  1.  
  2. $sql="INSERT INTO primer_tabla VALUES ('',1,2,3);";
  3. $sql.="INSERT INTO segunda_tabla VALUES ('',3,2,1);";
  4. /* '' las utilizo por que es autoincrementable */
  5.  
  6. echo $sql;
  7. /*imprimo mi consulta*/
  8.  
  9. $insertar=mysql_query($sql,$enlace);
  10. if(!$insertar){
  11. }
  12.  
  13.  

ya que lo ejecuto me aparece un error de syntaxis... pero si copio el echo que me arroja php y lo pego en la consola de mysql si se insertan y no me da error...

si comento la primer consulta, la segunda si funciona, si comento la segunda, la primera también lo hace...

ósea dejan de funcionar juntas...

ayer ya habia probado he insertado varias veces entonces no entiendo q puede ser alguna idea o sugerencia ?? saludos...



« Última modificación: 23 Mayo 2014, 19:20 pm por basickdagger » En línea

#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.614



Ver Perfil WWW
Re: insertar en 2 tablas distintas
« Respuesta #1 en: 23 Mayo 2014, 18:56 pm »

Lo que haces en la consola de mysql en realidad es tirar 2 consultas. Lo que intentas en el php es tirar 2 INSERTS en una consulta.. cosa que no es posible.

Código
  1. $sql = array();
  2. $sql[] = 'INSERT INTO primer_tabla VALUES ('',1,2,3)';
  3. $sql[] = "INSERT INTO segunda_tabla VALUES ('',3,2,1)";
  4.  
  5. print_r($sql);
  6.  
  7. foreach($sql as $consulta){
  8.   if(!mysql_query($consulta,$enlace)){
  9.      die(mysql_error());
  10.   }
  11. }
  12.  

PD: UTILIZA MYSQLI... mysql esta viejo.

Saludos


En línea

basickdagger


Desconectado Desconectado

Mensajes: 646


System.out.println("this is weird as fuck");


Ver Perfil
Re: insertar en 2 tablas distintas
« Respuesta #2 en: 23 Mayo 2014, 19:20 pm »

muchas gracias, por fin pude resolverlo, lo curioso es que ayer hice algunas pruebas y si me insertaba los datos...
bueno ya estoy comenzando a dudar que realmente haya funcionado... jajaja peor bueno, como lo explicaste me funciono excelente, muchas gracias...

pd. por más que me lo dicen al final siempre termino mysql hasta que lo recuerdo  :xD

saludos
En línea

Mokonauta

Desconectado Desconectado

Mensajes: 28


Destiny decides until is desify by the fated


Ver Perfil
Re: insertar en 2 tablas distintas
« Respuesta #3 en: 29 Mayo 2014, 22:11 pm »

Hay otra manera de hacer varios inserts en una sola sentencia
Lo primero que tienes que hacer es traer los datos que vayas a insertar

Ej.

Código
  1. $datos = array('dato1','dato2','dato3','dato4'); //
  2. $tables = array("tabla1","tabla2");
  3.  
  4. foreach($datos as $dato){
  5. $losdatos .= "'$dato',";
  6. $a++;
  7. }
  8. $parausar = substr($losdatos, 0, -1);
  9.  
  10. $sql = 'START TRANSACTION;<br />';
  11. foreach($tables as $table){
  12. $sql .= "INSERT INTO $table (num1, num2, num3, num4) VALUES ("; // Suponiendo que ingresaras los mismo datos en ambas tablas (poco probable pero es un ejemplo)
  13. $sql .= "$parausar);<br />";
  14. }
  15. $sql .= "COMMIT;";
  16.  
  17. # Aquí ya tienes todo el query solo tienes que ejecutarlo, seguro que sabes como.
  18.  

Los TRANSACTIONS son para hacer bloques de consultas, ayudan a mejorar el control y flujo de las mismas.
En línea

El destino decide hasta que es desafiado por los condenados.
#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.614



Ver Perfil WWW
Re: insertar en 2 tablas distintas
« Respuesta #4 en: 30 Mayo 2014, 18:31 pm »

@Mokonauta, ese código que has proporcionado es completamente infuncional y en todo caso seria valido solo para una conexión con CLIENT_MULTI_STATEMENTS o usando mysqli.

Por otra parte efectivamente las transacciones son bastante útiles en estos casos. Una nota, si usas START TRANSACTION asegúrate de definir AUTOCOMMIT=0 antes.

Código
  1. $consultas = array();
  2. $consultas[] = 'INSERT INTO primer_tabla VALUES ('',1,2,3)';
  3. $consultas[] = "INSERT INTO segunda_tabla VALUES ('',3,2,1)";
  4.  
  5. mysql_query('SET AUTOCOMMIT=0;');
  6. mysql_query('START TANSACTION;');
  7.  
  8. foreach($consultas as $consulta){
  9.  if(!mysql_query($consulta,$enlace)){ $error = true; break;}
  10. }
  11.  
  12. // Si hay error, hacemos rollback (deshacer)
  13. if(isset($error)){ mysql_query('ROLLBACK',$enlace); }
  14. // en caso contrario, commit (aplicar)
  15. else { mysql_query('COMMIT',$enlace); }



Aquí puedes ver porque usar mysqli te puede venir bien.. justo para lo que quieres..

Código
  1. <?php
  2.  
  3. $enlace = new mysqli('host', 'user', 'pass', 'db');
  4. if($enlace->connect_errno){ die('Fallo al connectar: '.$enlace->connect_error); }
  5.  
  6. $query =  "INSERT INTO primer_tabla VALUES ('',1,2,3); ";
  7. $query .= "INSERT INTO segunda_tabla VALUES ('',3,2,1); ";
  8.  
  9. if(!$enlace->multi_query($query)){
  10. die('Error en query: '.$enlace->error);
  11. }
  12.  
  13. ?>

Saludos
« Última modificación: 30 Mayo 2014, 18:34 pm por #!drvy » En línea

basickdagger


Desconectado Desconectado

Mensajes: 646


System.out.println("this is weird as fuck");


Ver Perfil
Re: insertar en 2 tablas distintas
« Respuesta #5 en: 30 Mayo 2014, 22:22 pm »

hola gracias por sus respuestas
pero...

Citar
Por otra parte efectivamente las transacciones son bastante útiles en estos casos.

que ventajas existen de trabajarlo así, a diferencia de la primer manera que me comentaste?

Saludos
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
editar formulario de datos de dos tablas distintas
Desarrollo Web
Casperman 0 917 Último mensaje 25 Septiembre 2012, 22:50 pm
por Casperman
mysql relacionar campos de distintas tablas
Bases de Datos
Pirat3net 2 2,987 Último mensaje 8 Octubre 2012, 16:15 pm
por Pirat3net
Insertar tablas de BD en mi web. (Estancado)
PHP
WiseHidden 2 1,627 Último mensaje 23 Diciembre 2012, 19:33 pm
por WiseHidden
insertar datos de diferentes tablas con left join
Bases de Datos
gAb1 2 1,668 Último mensaje 31 Julio 2015, 20:55 pm
por fran800m
Vincular tablas de distintas bases de datos
Programación Visual Basic
cristian.alarcon 0 942 Último mensaje 10 Agosto 2017, 17:10 pm
por cristian.alarcon
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines