【问题标题】:cakePHP WHERE IN CLAUSE : Array to String convertioncakePHP WHERE IN CLAUSE:数组到字符串的转换
【发布时间】:2023-04-08 03:45:01
【问题描述】:

您好,我想从表中获取以下数组范围内的所有数据: //从AJAX发送到PHP的数据

$authors = $_POST['authors'];
$articles= $_POST['articles'];

以下 cakePHP 查询给了我以下错误:

查询:

$this->Mymodel->find('all', array('conditions' => array('Mymodel.name' => array($authors ,$articles)),'order'=>'Mymodel.id DESC'));

错误:

Notice (8): Array to string conversion [CORE/Cake/Model/Datasource/DboSource.php, line 2591]
Database Error

Error: SQLSTATE[42601]: Syntax error: 7 ERROR: syntax error at or near "," LINE 1: ...Mymodel" WHERE "Mymodel"."name" IN (Array, Array) ... ^

我做错了什么?我知道如果我有一个 $authors = array('sss','rrr'); 的数组,它会起作用,那么为什么它在我的情况下不起作用? 提前谢谢你。

【问题讨论】:

    标签: cakephp where-in


    【解决方案1】:

    我相信您的 $authors$articles 变量已经是数组了。

    $this->Mymodel->find('all', array(
      'conditions' => array(
          'Mymodel.name' => array_merge($authors, $articles)
       ),
      'order'=>'Mymodel.id DESC')
    );
    

    【讨论】:

    • 你的代码有问题,OR 数组不能有两次相同的键,所以条件也应该用数组包裹 - array('OR' => array(array('Mymodel.name' => $authors), array('Mymodel.name' => $articles)))
    • 感谢您的回答,但这不是我想要的,我不想要“OR”子句,我想要这样的东西:$article=array('Jhon','Bill') ; $autors = array('article2','article3'); $this->Mymodel->find('all', array('conditions' => array('Mymodel.name' => array("Jhon","Bill","article2","article3")),' order'=>'Mymodel.id DESC'));最后一个查询会起作用,但这个不会: $this->Mymodel->find('all',array('conditions'=>array('Mymodel.name'=>array($articles,$autors)), 'order'=>'Mymodel.id DESC'));那我怎样才能让它工作呢?
    • 哈哈哈,你是喝酒还是什么?现在我们都在同一个页面上,并且按照我的意愿粉碎它,非常感谢:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-13
    • 2022-12-27
    • 1970-01-01
    • 2021-04-19
    • 2011-09-30
    • 1970-01-01
    相关资源
    最近更新 更多