IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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
    Inscrit en
    Février 2010
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 35
    Points : 20
    Points
    20
    Par défaut 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é
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Points : 1 220
    Points
    1 220
    Par défaut
    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
    Inscrit en
    Février 2010
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 35
    Points : 20
    Points
    20
    Par défaut
    j'ai résolu le problème autrement, en traitant les deux chanps séparemment.
    Merci pour votre réponse.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. zend 1.12, mysql / joinLeft
    Par yiwen dans le forum Zend_Db
    Réponses: 1
    Dernier message: 12/08/2013, 13h38
  2. Zend Framework et MySQL
    Par tchatchouang dans le forum Zend_Db
    Réponses: 1
    Dernier message: 04/06/2013, 13h26
  3. Installation Zend PC et MySQL
    Par iloyer dans le forum Zend
    Réponses: 2
    Dernier message: 07/03/2012, 16h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo