2010-08-09 70 views
0

我正在一个错误的工作条款:
消息: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 2凡与Zend_Db的并不如预期

造成这行代码

$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')); 

我的目标是这样的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 

我认为这是 - >在哪里位,因为w母鸡我删除它,我得到10行。

回答

1

编辑: 这个工作对我来说:

 ->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')); 

让我知道是否可行。

+0

不,我没做过,但做完后仍然出现错误'SQLSTATE [42000]:语法错误或访问冲突:1064您的SQL语法错误;检查与您的MySQL服务器版本相对应的手册,以在'%'中文'%'附近使用正确的语法'ORDER BY'text_id'在第2行DESC LIMIT 10' – Moak 2010-08-09 04:52:38

+0

我试过了,它会生成一个函数查询, 。问题是WHERE子句应该看起来像这样:WHERE s.name LIKE'%blah%' – user387302 2010-08-09 05:02:11