Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Zend_Db PHP Discussion :

zend 1.12, mysql


Sujet :

Zend_Db PHP

  1. #1
    Membre à l'essai
    zend 1.12, mysql
    Bonjour tout le monde,
    j'ai un problème avec les cote dans les requettes mysql.
    Ma requette en zend est :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    			 	$resultat =
    			 	$this->select()->setIntegrityCheck(false)
    			 	->from((array('s' => 'site')),array('s.nidt' ,'s.nom_site', 's.x','s.y'))
    			 	->join(array('op'=>'operation'),'op.fk_nidt = s.nidt',array(
    			 			'op.code_ope',  'op.fn1'			 	))
    			 	->where('op.etat_ope = ?', "EN COURS")
    			 	->where('op.code_ope LIKE ?',$nidt.'%')
    			 	->orWhere('s.nom_site = ?',$nom);

    le résultat en sql est
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
     
    SELECT `s`.`nidt`, `s`.`nom_site`, `s`.`x`, `s`.`y`, `op`.`code_ope`, `op`.`fn1` FROM `site` AS `s` INNER JOIN `operation` AS `op` ON op.fk_nidt = s.nidt WHERE (op.etat_ope = 'EN COURS') AND (op.code_ope LIKE '%1W2%') OR (s.nom_site = '')

    J'aimerai avoir
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    WHERE (op.etat_ope = 'EN COURS') AND ((op.code_ope LIKE '%1W2%') OR (s.nom_site = ''))

    Merci.

  2. #2
    Membre éprouvé
    bonjour,

    les valeurs(quand elles sont des string) dans la clause where doivent être échappées avec quoteInto par exemple:
    Code php :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
                         $resultat =
    			 	$this->select()->setIntegrityCheck(false)
    			 	->from((array('s' => 'site')),array('s.nidt' ,'s.nom_site', 's.x','s.y'))
    			 	->join(array('op'=>'operation'),'op.fk_nidt = s.nidt',array(
    			 			'op.code_ope',  'op.fn1'			 	))
    			 	->where($this->getAdapter()->quoteInto('op.etat_ope = ?', "EN COURS"))
    			 	->where($this->getAdapter()->quoteInto('op.code_ope LIKE ?',$nidt.'%'))
    			 	->orWhere( $this->getAdapter()->quoteInto('s.nom_site = ?',$nom));

  3. #3
    Membre à l'essai
    j'ai résolu le problème autrement, en traitant les deux chanps séparemment.
    Merci pour votre réponse.

###raw>template_hook.ano_emploi###