【问题标题】:Error with Find query in cakephp在 cakephp 中查找查询时出错
【发布时间】:2014-08-30 00:10:01
【问题描述】:

CakePHP 代码

$data = $this->DropDownMultiple->find('all',array(
            'conditions'=>array('FIND_IN_SET(?,DropDownMultiple.interest)' => array('football')),
            'order'=>'created_on desc'
            )
        );

SQL 查询

SELECT DropDownMultiple.*
FROM `cakephp_tutorial`.`drop_down_multiples` AS `DropDownMultiple`
WHERE FIND_IN_SET('football',`DropDownMultiple`.`interest`) =
ORDER BY `created_on` DESC

语法错误

语法错误或访问冲突:1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“ORDER BY created_on desc”附近使用正确的语法

问题是在 where 条件的末尾插入 = 符号。为什么会这样?我哪里错了?帮帮我。

【问题讨论】:

  • @joshua.paling 如果我将直接值放在find_in_set 中,那么它可以正常工作,但参数化将不起作用
  • @Sadikhasan 无论 ndm 对您之前的问题提出的建议对我也不起作用。
  • @RajeevRanjan 是的,你是对的!我还检查了不同的方法,但它不起作用。
  • 伙计们,我向您展示的内容绝对有效! @Sadikhasan

标签: php mysql cakephp


【解决方案1】:

为什么不在原问题答案的 cmets 中使用the code that I've posted

您似乎已经设法删除了the hidden chars that I've mentioned,至少它们不再出现在您在此处显示的代码中,但不确定您实际使用的代码。

但是,您没有使用我向您展示的格式:

$data = $this->DropDownMultiple->find('all', array(
        'conditions' => array(
            'FIND_IN_SET(?, `DropDownMultiple`.`interest`)' => 'football'
        ),
        'order' => 'created_on desc'
    )
);

注意模型和字段名称的引号,最重要的是, 后面的空格。 要求该空间可能是 CakePHP 中的一个错误,不确定。

另请注意,无需将值包装到数组中,即使它在仅包含单个条目的情况下也有效。

【讨论】:

    猜你喜欢
    • 2017-03-24
    • 2012-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-14
    • 2012-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多