Foros del Web » Programando para Internet » PHP »

Dos queries en una?...

Estas en el tema de Dos queries en una?... en el foro de PHP en Foros del Web. Hola... Cómo se definen dos o más queries despues de un evento?... Me explico... Tengo un formulario a través del cual ingreso valores que posteriormente ...
  #1 (permalink)  
Antiguo 29/04/2010, 06:41
Avatar de andrewp  
Fecha de Ingreso: agosto-2003
Ubicación: Barcelona
Mensajes: 1.160
Antigüedad: 20 años, 7 meses
Puntos: 5
Dos queries en una?...

Hola...

Cómo se definen dos o más queries despues de un evento?...

Me explico... Tengo un formulario a través del cual ingreso valores que posteriormente guardo en una tabla de Mysql. Sin embargo, me gustaría que se ejecutaran dos queries una vez el botón 'submit' sea ejecutado... He hecho +/- esto pero solo me ejecuta la primera query, no la segunda:

Código PHP:
 if (isset($_POST["submit"])){
$sql_1 "INSERT INTO table_1 (id, nombre, apellido) values (".$id.",".$nombre.",".$apellido.")";
mysql_query ($sql_1) or die (mysql_error());
        } elseif (isset(
$_POST["submit"])){    
$sql_2 "UPDATE table_2 SET estado='ok' WHERE id='".$id."'";
mysql_query($sql_2) or die(mysql_error());
    }

__________________
Andrew :P
  #2 (permalink)  
Antiguo 29/04/2010, 06:43
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 14 años, 8 meses
Puntos: 150
Respuesta: Dos queries en una?...

Hombre, tienes una sentencia si el IF se cumple y otra en su ELSE (en este caso ELSEIF), es imposible que se ejecuten las dos, ¿o he entendido mal tu duda probablemente?
  #3 (permalink)  
Antiguo 29/04/2010, 06:52
Avatar de andrewp  
Fecha de Ingreso: agosto-2003
Ubicación: Barcelona
Mensajes: 1.160
Antigüedad: 20 años, 7 meses
Puntos: 5
Respuesta: Dos queries en una?...

Si, bueno... es precisamente eso que no sé cómo hacer... LA primera se cumple y puedo ver los datos en la BD... Pero la segunda no hace nada... Así, no sé si el "ELSEIF" está bien o debería cambiarlo por otra sentencia?
__________________
Andrew :P
  #4 (permalink)  
Antiguo 29/04/2010, 06:54
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Dos queries en una?...

Código PHP:
Ver original
  1. if (isset($_POST["submit"])){
  2. $sql_1 = "INSERT INTO table_1 (id, nombre, apellido) values (".$id.",".$nombre.",".$apellido.")";
  3. mysql_query ($sql_1) or die (mysql_error());
  4. $sql_2 = "UPDATE table_2 SET estado='ok' WHERE id='".$id."'";
  5. mysql_query($sql_2) or die(mysql_error());
  6. }

=)

le estas diciendo a php..
si llega el el dato A... hace esto... pero si llega el dato A hace esto otro.. o.O hasta para confusio es confuso

saludos!
__________________
More about me...
~ @rhyudek1
~ Github
  #5 (permalink)  
Antiguo 29/04/2010, 07:14
Avatar de andrewp  
Fecha de Ingreso: agosto-2003
Ubicación: Barcelona
Mensajes: 1.160
Antigüedad: 20 años, 7 meses
Puntos: 5
Respuesta: Dos queries en una?...

... Gracias... Pensé que el ELSE me indicaba un "tambien" en la query...
__________________
Andrew :P
  #6 (permalink)  
Antiguo 29/04/2010, 08:24
Avatar de martin0341  
Fecha de Ingreso: septiembre-2006
Ubicación: Rosario - Santa Fe
Mensajes: 296
Antigüedad: 17 años, 7 meses
Puntos: 8
Respuesta: Dos queries en una?...

Código PHP:
Ver original
  1. if (isset($_POST["submit"]))
  2. {
  3. $sql_1 = "INSERT INTO table_1 (id, nombre, apellido) values (".$id.",".$nombre.",".$apellido.")";
  4. mysql_query($sql_1) or die(mysql_error());
  5. $sql_2 = "UPDATE table_2 SET estado='ok' WHERE id='".$id."'";
  6. mysql_query($sql_2) or die(mysql_error());
  7. }
  #7 (permalink)  
Antiguo 29/04/2010, 08:25
fiu
 
Fecha de Ingreso: diciembre-2006
Ubicación: Barcelona
Mensajes: 128
Antigüedad: 17 años, 3 meses
Puntos: 8
Respuesta: Dos queries en una?...

creo que lo mejor es que hagas una transaccion,

así ademas de ejecutar varias consultas a la vez, te aseguras de que todas se ejecutan correctamente.

un ejemplo seria:

Código PHP:
Ver original
  1. $error = 0;
  2.  
  3. $sql = "BEGIN"; // inicias una transaccion
  4. $res = mysql_query($sql,$con);
  5. if(!$res) { $error = 1; echo mysql_error(); }
  6.  
  7. $sql = "INSERT INTO table_1 (id, ..."; // primera consulta
  8. $res = mysql_query($sql,$con);
  9. if(!$res) { $error = 1; echo mysql_error(); }
  10.  
  11. $sql = "UPDATE tabla SET campo=$valor WHERE ..."; // consulta 2
  12. $res = mysql_query($sql,$con);
  13. if(!$res) { $error = 1; echo mysql_error(); }
  14.  
  15. $sql = "UPDATE tabla2 SET campo=$valor2 WHERE ..."; // asi tantas como quieras
  16. $res = mysql_query($sql,$con);
  17. if(!$res) { $error = 1; echo mysql_error(); }
  18.  
  19. if($error==0) {
  20.         // si todas se han ejecutado, le dices a la bbdd que termine satisfactoriamente
  21.     $sql = "COMMIT";
  22.     $res = mysql_query($sql,$con);
  23.     echo "consultas ejecutadas.";
  24. }
  25. else {
  26.         // si algo ha fallado deshace todos los cambios que has hecho.
  27.     $sql = "ROLLBACK;";
  28.     $res = mysql_query($sql,$con);
  29.     echo "No se han podido ejecutar las consultas.";
  30. }
  #8 (permalink)  
Antiguo 29/04/2010, 08:28
Avatar de andrewp  
Fecha de Ingreso: agosto-2003
Ubicación: Barcelona
Mensajes: 1.160
Antigüedad: 20 años, 7 meses
Puntos: 5
De acuerdo Respuesta: Dos queries en una?...

Cita:
Iniciado por fiu Ver Mensaje
creo que lo mejor es que hagas una transaccion,

así ademas de ejecutar varias consultas a la vez, te aseguras de que todas se ejecutan correctamente.

un ejemplo seria:

Código PHP:
Ver original
  1. $error = 0;
  2.  
  3. $sql = "BEGIN"; // inicias una transaccion
  4. $res = mysql_query($sql,$con);
  5. if(!$res) { $error = 1; echo mysql_error(); }
  6.  
  7. $sql = "INSERT INTO table_1 (id, ..."; // primera consulta
  8. $res = mysql_query($sql,$con);
  9. if(!$res) { $error = 1; echo mysql_error(); }
  10.  
  11. $sql = "UPDATE tabla SET campo=$valor WHERE ..."; // consulta 2
  12. $res = mysql_query($sql,$con);
  13. if(!$res) { $error = 1; echo mysql_error(); }
  14.  
  15. $sql = "UPDATE tabla2 SET campo=$valor2 WHERE ..."; // asi tantas como quieras
  16. $res = mysql_query($sql,$con);
  17. if(!$res) { $error = 1; echo mysql_error(); }
  18.  
  19. if($error==0) {
  20.         // si todas se han ejecutado, le dices a la bbdd que termine satisfactoriamente
  21.     $sql = "COMMIT";
  22.     $res = mysql_query($sql,$con);
  23.     echo "consultas ejecutadas.";
  24. }
  25. else {
  26.         // si algo ha fallado deshace todos los cambios que has hecho.
  27.     $sql = "ROLLBACK;";
  28.     $res = mysql_query($sql,$con);
  29.     echo "No se han podido ejecutar las consultas.";
  30. }
INTERESANTÍSIMO!... Gracias por tu aporte....
__________________
Andrew :P
  #9 (permalink)  
Antiguo 29/04/2010, 08:33
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Dos queries en una?...

Cita:
Iniciado por fiu Ver Mensaje
creo que lo mejor es que hagas una transaccion,

así ademas de ejecutar varias consultas a la vez, te aseguras de que todas se ejecutan correctamente.

un ejemplo seria:

Código PHP:
Ver original
  1. $error = 0;
  2.  
  3. $sql = "BEGIN"; // inicias una transaccion
  4. $res = mysql_query($sql,$con);
  5. if(!$res) { $error = 1; echo mysql_error(); }
  6.  
  7. $sql = "INSERT INTO table_1 (id, ..."; // primera consulta
  8. $res = mysql_query($sql,$con);
  9. if(!$res) { $error = 1; echo mysql_error(); }
  10.  
  11. $sql = "UPDATE tabla SET campo=$valor WHERE ..."; // consulta 2
  12. $res = mysql_query($sql,$con);
  13. if(!$res) { $error = 1; echo mysql_error(); }
  14.  
  15. $sql = "UPDATE tabla2 SET campo=$valor2 WHERE ..."; // asi tantas como quieras
  16. $res = mysql_query($sql,$con);
  17. if(!$res) { $error = 1; echo mysql_error(); }
  18.  
  19. if($error==0) {
  20.         // si todas se han ejecutado, le dices a la bbdd que termine satisfactoriamente
  21.     $sql = "COMMIT";
  22.     $res = mysql_query($sql,$con);
  23.     echo "consultas ejecutadas.";
  24. }
  25. else {
  26.         // si algo ha fallado deshace todos los cambios que has hecho.
  27.     $sql = "ROLLBACK;";
  28.     $res = mysql_query($sql,$con);
  29.     echo "No se han podido ejecutar las consultas.";
  30. }
para eso necesitas que tus tablas sean compatibles... innoDB por ejemplo
(hace que las consultas sean mas lentas si)
__________________
More about me...
~ @rhyudek1
~ Github

Etiquetas: dos, queries
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 03:36.