Zend_Db 的 Where 子句未按预期工作

发布于 2024-09-13 14:22:19 字数 870 浏览 5 评论 0原文

我收到错误:
消息: SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在 '%'Chinese'% 附近使用的正确语法。 ORDER BYtext_idDESC LIMIT 10' at line 2

由这行代码引起代码

 $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 

我认为它是 ->where 位,因为当我删除它时,我得到 10 行。

I am getting an error:
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 BYtext_idDESC LIMIT 10' at line 2

caused by this line of 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'));

My target is this 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 

i think it's the ->where bit, because when I remove it i get 10 rows.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

剩一世无双 2024-09-20 14:22:19

编辑:
这对我有用:

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

让我知道这是否有效。

Edit:
This works for me:

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

Let me know if that works.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文