2010-08-09 16 views
0

Je reçois une erreur:
Message: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 '%'Chinese'%) ORDER BY text_id DESC LIMIT 10' at line 2clause Where avec Zend_Db ne fonctionne pas comme prévu

causé par cette ligne de code

$select = $this->_db->select('') 
      ->from(array('t'=>'as_text')) 
      ->where('`s`.`name` LIKE %?%',$search) //this is causing error 
      ->limit((int)$limit) 
      ->order('text_id DESC') 
      ->join(array('s'=>'as_source'),'t.source_id = s.source_id',array('s.name as source')); 

Mon objectif est cette sql:

SELECT `t` . * , `s`.`name` AS `source` 
FROM `as_text` AS `t` 
INNER JOIN `as_source` AS `s` ON t.source_id = s.source_id 
WHERE `s`.`name` LIKE '%Chinese%' 
ORDER BY `text_id` DESC 
LIMIT 10 

Je pense qu'il est le -> où peu, parce que w quand je l'enlève je reçois 10 rangs.

Répondre

1

Edit: Cela fonctionne pour moi:

 ->from(array('t'=>'as_text')) 
     ->where("s.name LIKE ?",'%'.$search.'%') //this is causing error 
     ->limit((int)$limit) 
     ->order('text_id DESC') 
     ->join(array('s'=>'as_source'), 
     't.source_id = s.source_id', 
     array('s.name as source')); 

Laissez-moi savoir si cela fonctionne.

+0

non je ne l'ai pas fait, mais après l'avoir toujours une erreur 'SQLSTATE [42000]: Erreur de syntaxe ou violation d'accès: 1064 Vous avez une erreur dans votre syntaxe SQL; vérifier le manuel qui correspond à votre version du serveur MySQL pour la bonne syntaxe à utiliser près de '%' Chinese '%) ORDER BY 'text_id' DESC LIMIT 10' à la ligne 2' – Moak

+0

Je l'ai essayé, et il génère une requête de manière fonctionnelle . Le problème était que la clause WHERE devait ressembler à ceci: WHERE s.name LIKE '% blah%' – user387302