Foros del Web » Programando para Internet » PHP » Zend »

[SOLUCIONADO] parentesis en where zend_db_select

Estas en el tema de parentesis en where zend_db_select en el foro de Zend en Foros del Web. Hola, estoy intentando hacer una consulta de este tipo en mi modelo que extiende de Zend_Db_Table_Abstract: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código MySQL: Ver original SELECT * FROM ...
  #1 (permalink)  
Antiguo 07/06/2013, 11:33
 
Fecha de Ingreso: abril-2013
Mensajes: 82
Antigüedad: 11 años, 6 meses
Puntos: 0
parentesis en where zend_db_select

Hola, estoy intentando hacer una consulta de este tipo en mi modelo que extiende de Zend_Db_Table_Abstract:

Código MySQL:
Ver original
  1. FROM tabla
  2. WHERE id=1 AND nombre LIKE \''.$nombre.'\' AND (apellido1 LIKE \''.$apellido.'\' OR apellido2 LIKE \''.$apellido.'\')

El problema que tengo es al poner el paréntesis para que tenga prioridad el OR.

Según la documentacion he visto esto:
http://framework.zend.com/manual/1.1...db.select.html

Código PHP:
Ver original
  1. // Build this query:
  2. //   SELECT product_id, product_name, price
  3. //   FROM "products"
  4. //   WHERE (price < 100.00 OR price > 500.00)
  5. //     AND (product_name = 'Apple')
  6.  
  7. $minimumPrice = 100;
  8. $maximumPrice = 500;
  9. $prod = 'Apple';
  10.  
  11. $select = $db->select()
  12.              ->from('products',
  13.                     array('product_id', 'product_name', 'price'))
  14.              ->where("price < $minimumPrice OR price > $maximumPrice")
  15.              ->where('product_name = ?', $prod);

He intentado hacerlo de esta forma y me sale el siguiente error:

Column not found: 1054 Unknown column '$empresa' in 'where clause'

El código es este:


Código PHP:
public function todasreservas($dni$nombre$apellidos$idreserva$empresa) {

        
$empresa $empresa;

        
$row $this->fetchAll($this->select()->where('dni LIKE ?',$dni)->where('idreserva LIKE?',$idreserva)->where('parcelaidcamping LIKE $empresa OR bungalowidcamping LIKE $empresa OR idempresaactividad LIKE $empresa')->order(array('fechaentrada'))->order(array('dni')));

 
$rowArray $row->toArray();

        return 
$rowArray
  #2 (permalink)  
Antiguo 07/06/2013, 11:38
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: parentesis en where zend_db_select

Recuerda que en las comillas simples, las variables no se expanden, tienes que usar comillas dobles. Ahora dentro de tu consulta debes de escapar las variables que necesiten que las escapes, si la pones literal, puedes corromper tu query.

Saludos.
  #3 (permalink)  
Antiguo 07/06/2013, 11:41
 
Fecha de Ingreso: abril-2013
Mensajes: 82
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: parentesis en where zend_db_select

Lo he solucionado. Era de esta forma:

Código PHP:
 $row $this->fetchAll($this->select()->where('dni LIKE ?',$dni)->where('idreserva LIKE?',$idreserva)->where('parcelaidcamping LIKE \''.$empresa.'\' OR bungalowidcamping LIKE \''.$empresa.'\' OR idempresaactividad LIKE \''.$empresa.'\'')->order(array('fechaentrada'))->order(array('dni'))); 
Gracias por la ayuda.

Etiquetas: Ninguno
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 04:39.