Foros del Web » Programando para Internet » PHP »

Mejorar este código INSERT con PHP

Estas en el tema de Mejorar este código INSERT con PHP en el foro de PHP en Foros del Web. Desde que he añadido este fragmento he aumentado el tiempo de ejecución del script en unos 20-30 segundos. Muchísimo. Aunque es un proceso automático que ...
  #1 (permalink)  
Antiguo 09/08/2012, 03:45
 
Fecha de Ingreso: abril-2012
Mensajes: 590
Antigüedad: 12 años, 6 meses
Puntos: 58
Mejorar este código INSERT con PHP

Desde que he añadido este fragmento he aumentado el tiempo de ejecución del script en unos 20-30 segundos. Muchísimo. Aunque es un proceso automático que nadie va a estar esperando el resultado.

Código PHP:
$conexion odbc_connect "origen_de_datos""""") or die(exit("Imposible conectar")); 
$sql "SELECT codigo, exist5, pvp6 FROM articulo WHERE (exist5 IS NOT NULL) AND (exist5 >0)"
$resultado=odbc_exec($conexion,$sql)or die(exit("Error en odbc_exec"));
 while (
$fila odbc_fetch_object($resultado))
 {             
    
$nombreBD "nombre_bd";
    
$consulta "UPDATE producto SET pvp6 = '$fila->pvp6', 
        exisTotal = '$fila->exist5' WHERE producto.codigo = '$fila->codigo'"
;                    
    include(
"conexion.php"); 
 } 
Pero claro el problema es que se realiza una consulta por cada registro. Lo podría hacer con un sólo comando UPDATE usando la variable $resultado ?
  #2 (permalink)  
Antiguo 09/08/2012, 04:03
Avatar de 60NZ4  
Fecha de Ingreso: mayo-2012
Ubicación: 404 Not found
Mensajes: 112
Antigüedad: 12 años, 6 meses
Puntos: 2
Respuesta: Mejorar este código INSERT con PHP

no se que hace el include("conexion.php"); al final, se pone al principio

prueba con esto y luego nos cuentas

Código PHP:
Ver original
  1. include("conexion.php");
  2.  
  3. $sql = "SELECT codigo, exist5, pvp6 FROM articulo WHERE (exist5 IS NOT NULL) AND (exist5 >0)";
  4. $resultado=odbc_exec($conexion,$sql)or die(exit("Error en odbc_exec"));
  5.  while ($fila = odbc_fetch_object($resultado))
  6.  {            
  7.     //si no siempre se actualiza podrias meter un if aqui
  8.     $nombreBD = "nombre_bd";
  9.     $consulta = "UPDATE producto SET pvp6 = '.$fila->pvp6.',   // realmente te funciona sin escribir '..$fila->pvp6'  ??
  10.        exisTotal = '$fila->exist5' WHERE producto.codigo = '.$fila->codigo.'";                    // aqui lo mismo
  11.    
  12.  }


la variable resultado no la podrias usar deberias hacerlo asi :

Código PHP:
Ver original
  1. include("conexion.php");
  2.  
  3. $sql = "SELECT codigo, exist5, pvp6 FROM articulo WHERE (exist5 IS NOT NULL) AND (exist5 >0)";
  4. $resultado=odbc_exec($conexion,$sql)or die(exit("Error en odbc_exec"));
  5. $fila = odbc_fetch_object($resultado);
  6.  
  7. //usas $fila->campo
suerte
__________________
Nadie nace aprendido, un experto es simplemente alguien que ya ha cometido muchos errores

Última edición por 60NZ4; 09/08/2012 a las 04:10
  #3 (permalink)  
Antiguo 09/08/2012, 04:29
 
Fecha de Ingreso: abril-2012
Mensajes: 590
Antigüedad: 12 años, 6 meses
Puntos: 58
Respuesta: Mejorar este código INSERT con PHP

Muchas gracias, lo voy a probar.

El tema de conexion.php es porque tiene este aspecto:
Código PHP:
    $servidor 'server';
    
$usuario 'user';
    
$clave 'password';
    
$conn mysql_connect($servidor$usuario$clave) or die( mysql_error("No se pudo conectar"));
    
mysql_select_db$nombreBD$conn ) or die( mysql_error$conn ) );
    
$resultado mysql_query$consulta$conn ) or die( mysql_error$conn ));
    if (isset(
$cerrarConexion))
    {
        
mysql_close();
        
$unset ($cerrarConexion); 
    } 
Y así ya me da la variable $resultado aunque supongo que puede ser un poco confuso sobretodo si otro mira el código. Creo que lo cambiaré. Es que estoy intentando quitar todas las líneas que pueda del código porque es larguísimo.

Bueno metiendo el if para evitar ciertos campos que no vengan nulos ha bajado un poco el tiempo pero supongo que es lo que hay.
  #4 (permalink)  
Antiguo 09/08/2012, 04:46
Avatar de 60NZ4  
Fecha de Ingreso: mayo-2012
Ubicación: 404 Not found
Mensajes: 112
Antigüedad: 12 años, 6 meses
Puntos: 2
Respuesta: Mejorar este código INSERT con PHP

Lo siento no se me ocurre nada mas jeje

mira aqui te dejo mi conexion.php

me parece la manera mas eficiente:

Código PHP:
Ver original
  1. class DBConnection{
  2.     function getConnection(){
  3.      
  4.         mysql_connect("localhost","user","pass") or
  5.          die("Could not connect: " . mysql_error());
  6.          
  7.      //change to your database name
  8.         mysql_select_db("basededatos") or
  9.              die("Could not select database: " . mysql_error());
  10.     }
  11.    
  12. }
  13.  
  14.  
  15. //para llamarlo en un archivo es :
  16.  
  17. $db = new DBConnection();
  18. $db->getConnection();
  19.  
  20. // y la ventaja es que para hacer una consulta o un insert o lo que sea a la BD
  21. // no necesitas volver a acordarte de la consexion, solo con esto funciona
  22.  
  23. $consulta = "SELECT * FROM alumnos";
  24. $result = mysql_query($consulta);


espero que te sirva


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

Etiquetas: insert, mejorar, registro, sql, variables
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 14:31.