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$id=array(1,33,45,3,23,4,5);
$sql="update empresa set activo='on' where id IN (";
$j=0;
for($i=0; $i<count($id);$i++){ if($j!=0) $sql.=",";
$sql.=$id[$i];
$j++;
}
}
$sql.=")";
$pdo=$db->prepare($sql);
$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....