Ver Mensaje Individual
  #2 (permalink)  
Antiguo 19/08/2011, 11:23
Avatar de abimaelrc
abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Cómo resolver el siguiente requerimiento, respetando OCP

Que tal, almacenando los valores en un array y luego unirlo con implode algo como

Código PHP:
Ver original
  1. $a = array();
  2. $a[] = 'foo = "valor1"';
  3. $a[] = 'bar = "valor2"';
  4. $a[] = 'baz = "valor3"';
  5.  
  6. $where = implode(' AND ', $a);
  7.  
  8. $qry = 'SELECT * FROM tabla where ' . $where;
  9. /**
  10.  * Mostraría algo como
  11.  * SELECT * FROM tabla where foo = "valor1" AND bar = "valor2" AND baz = "valor3"
  12.  */

También puedes usar array multidimensional y cosas así.

Código PHP:
Ver original
  1. $a = array();
  2. $a[] = array('tt.foo = "valor1"', 'INNER JOIN tabla2 tt ON tt.id = t.id');
  3. $a[] = array('ttt.bar = "valor2"', 'INNER JOIN tabla3 ttt ON ttt.id = t.id');
  4. $a[] = array('tttt.baz = "valor3"', 'INNER JOIN tabla4 tttt ON tttt.id = t.id');
  5.  
  6. $b = array($a[0][0], $a[2][0]);
  7. $c = array($a[0][1], $a[2][1]);
  8.  
  9. $where = implode(' AND ', $b);
  10. $join = implode(PHP_EOL, $c)
  11.  
  12. $qry = 'SELECT * FROM tabla t ' . $join . ' where ' . $where;
  13. /**
  14.  * Mostraría algo como
  15.  * SELECT * FROM tabla t INNER JOIN tabla2 tt ON tt.id = t.id INNER JOIN tabla4 tttt ON tttt.id = t.id where tt.foo = "valor1" AND tttt.baz = "valor3"
  16.  */
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos

Última edición por abimaelrc; 19/08/2011 a las 11:31