Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
je souhaiterai faire une requête assez basique comprenant une
SELECT ... WHERE mon_champ LIKE '%ma_var%'
Je m'y suis pris comme ceci:
$select = $this->_db->select(); $select->from($this->_name, array( 'id', 'title')) ->where('title LIKE ?', '%' . $name . '%'); return $this->fetchAll($select);
Lorsque j'écris la requête, elle est correcte mais lorsque je désire faire un fetchAll j'ai une erreur de syntaxe de ce type
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
Merci d'avance pour votre aide
Cdt
Dernière modification par FloK (16-02-2010 19:18:38)
Hors ligne
Peut-être en faisant :
->where('title LIKE '.$this->_db->getAdapter()->quote('%' . $name . '%'));
Je ne sais pas si cela fonctionne (non testé), si c'est le cas il existe peut-être plus simple.
Hors ligne
Problème résolu
Il suffisait de faire
$this->_db->fetchAll($select);
à la place de
$this->fetchAll($select);
Je comprends pas encore très bien pourquoi mais bon...
Hors ligne
where('title LIKE ?', '%' . $name . '%');
se serait plutôt
where('title LIKE %?%', $name); ...
Hors ligne