Yii Framework Forum: Bind Params - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Bind Params Rate Topic: -----

#1 User is offline   majuva68 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 3
  • Joined: 14-September 12

Posted 10 December 2012 - 06:27 AM

Siguiendo las indicaciones de seguridad de yii estoy intentando que todas mis sentencias sql
esten parametrizadas.
$tarea = Yii::app()->db->createCommand()->select('Fase')->from('fase')->
where('fase =:id,array(':id'=>$id))->queryRow();

El problema lo tengo cuando tengo una combinacion de in y and
$tarea = Yii::app()->db->createCommand()->select('Fase')->from('fase')->
where('fase'=$id and 'fase' in ('$ids')->queryRow();

hago

$tarea = Yii::app()->db->createCommand()->select('Fase')->from('fase')->
where('fase=:id' and 'fase' in (':ids'),array(:id=>$id,':ids'=>$ids)->queryRow();

Me da un fallo de parametros
Alguien me puede poner un ejemplo de combinacion de and, in parametrizados.

Muchas gracias.
0

#2 User is offline   rgmf 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 18
  • Joined: 12-August 12

Posted 10 December 2012 - 07:48 AM

View Postmajuva68, on 10 December 2012 - 06:27 AM, said:

Siguiendo las indicaciones de seguridad de yii estoy intentando que todas mis sentencias sql
esten parametrizadas.
$tarea = Yii::app()->db->createCommand()->select('Fase')->from('fase')->
where('fase =:id,array(':id'=>$id))->queryRow();

El problema lo tengo cuando tengo una combinacion de in y and
$tarea = Yii::app()->db->createCommand()->select('Fase')->from('fase')->
where('fase'=$id and 'fase' in ('$ids')->queryRow();

hago

$tarea = Yii::app()->db->createCommand()->select('Fase')->from('fase')->
where('fase=:id' and 'fase' in (':ids'),array(:id=>$id,':ids'=>$ids)->queryRow();

Me da un fallo de parametros
Alguien me puede poner un ejemplo de combinacion de and, in parametrizados.

Muchas gracias.


Yo utilizo DataProvider para construir las consultas pero, ¿no será por las comillas? A ver si funciona así:

$tarea = Yii::app()->db->createCommand()->select('Fase')->from('fase')->
where('fase=:id and fase in (:ids)',array(':id'=>$id,':ids'=>$ids)->queryRow();


Por cierto, un consejo: utiliza las etiquetas "code" cuando escribas código por aquí y así será más fácil leer los fragmentos de código ;)
0

#3 User is offline   majuva68 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 3
  • Joined: 14-September 12

Posted 10 December 2012 - 08:22 AM

View Postrgmf, on 10 December 2012 - 07:48 AM, said:

Yo utilizo DataProvider para construir las consultas pero, ¿no será por las comillas? A ver si funciona así:

$tarea = Yii::app()->db->createCommand()->select('Fase')->from('fase')->
where('fase=:id and fase in (:ids)',array(':id'=>$id,':ids'=>$ids)->queryRow();


Por cierto, un consejo: utiliza las etiquetas "code" cuando escribas código por aquí y así será más fácil leer los fragmentos de código ;)


No, no es por las comillas, se hace un lio con el array con el and y el in
0

#4 User is offline   AgentSmith 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 7
  • Joined: 12-December 12

Posted 12 December 2012 - 09:42 AM

View Postmajuva68, on 10 December 2012 - 08:22 AM, said:

No, no es por las comillas, se hace un lio con el array con el and y el in


No se si habrá alguna manera de parametrizar un "in". Yo, en tu caso, lo podría hacer de dos maneras:
1.- $ids, según la utilizas tiene que ser un string '1,2,3'. Sería una cadena de texto.
2.- Definir la condition y el array en un foreach previo:

$ids = array(1,2,3);
$params = array();
$condition = "'fase=:id and fase in (";

foreach( $ids as $value){
$condition .= ':ids'.$value.',';
$params[':ids'.$value] = $value;
}
//Quita la ultima coma de conditions
$conditions = substr($condition, 0, strlen($conditions)-1).)'";


//Tu consulta
$tarea = Yii::app()->db->createCommand()->select('Fase')->from('fase')->
where($condition,$params->queryRow();


En principio debería funcionar. $ids no puede ir vacia y debe ser un array.
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users