Ver Mensaje Individual
  #4 (permalink)  
Antiguo 20/11/2013, 04:07
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 2 meses
Puntos: 574
Respuesta: actualizar varios campos de una base de datos con php

En principio es más rápido una consulta que varias pero la velocidad de las consulta no depende solo de su sintaxis tambien depende de los datos en si... en este caso diría que la opción del IN se puede tener en cuenta.

UPDATE es una consulta de escriptura luego solo te ahorras el tiempo de comunicación entre el servidor web (php) y el servidor de bbdd... las operaciones que hace mysql para resolver el update con el IN y los updates individuales son practicamente las mismas...

En cuanto a validar los datos del array tienes la función is_nan que te dirá si son números....
Código PHP:
Ver original
  1. $id=array(1,33,45,3,23,4,5);
  2.  
  3. $sql="update empresa set activo='on' where id IN (";
  4. $j=0;
  5. for($i=0; $i<count($id);$i++){
  6.     if(is_nan($id[$i])) {
  7.         if($j!=0) $sql.=",";
  8.         $sql.=$id[$i];
  9.         $j++;
  10.     }
  11. }
  12.    $sql.=")";
  13.    $pdo=$db->prepare($sql);
  14.    $pdo->execute();

Quizas deberías usar is_int para asegurar que sean enteros....

Por otro lado los updates individuales te permiten saber si ha tenido exito la query sobre un id concreto mientras que con el IN solo pudes llegar a saber el número de filas afectadas....que puede o no coincidir con el count del array....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 20/11/2013 a las 04:31