【问题标题】:Zend DB fetchAll(): where clause array with IN operatorZend DB fetchAll():带有 IN 运算符的 where 子句数组
【发布时间】:2011-01-18 01:34:30
【问题描述】:

我正在使用与此查询等效的数据库从数据库中选择记录:

SELECT * FROM reports WHERE user_id IN (3, 6, 22);

调用 fetchAll() 的函数有一个参数,它是一个用户 ID 数组,这个调用工作得很好:

$resultSet = $this->getDbTable()->fetchAll('user_id IN (' . implode(', ', $userIds) . ')');

但是,我想为 where 子句使用一个数组,因为稍后可能会对查询有其他限制……而且我一辈子都想不通。我认为这将是以下方面的一些变化:

$resultSet = $this->getDbTable()->fetchAll(array('user_id IN ?' => '(' . implode(', ', $userIds) . ')'));

但到目前为止还没有骰子。有人可以在这里提供正确的语法吗?

【问题讨论】:

    标签: php sql zend-db


    【解决方案1】:
    $data = array(1, 2, 3);
    $select->where('user_id IN (?)', $data);
    

    【讨论】:

    • 好吧,它是针对 fetchAll() 而不是 where(),但这就是票。我之前尝试过 'user_id IN (?)' 但它与 implode() 的结果相关联,而不仅仅是直接的数组。
    【解决方案2】:

    在 Zend 2 中

    $data = array(1, 2, 3);
    $select->where('user_id', $data);
    

    【讨论】:

      【解决方案3】:
      $select = $this->getSql()->select();
      $select->where("reports.user_id in ('3','6','22')"); 
      $resultSet = $this->selectWith($select);             
      //echo $select->getSqlString();die;
      return $resultSet;
      

      【讨论】:

      • 虽然此代码可能有助于解决问题,但提供有关 why 和/或 如何 回答问题的额外上下文将显着改善其长期长期价值。请edit您的答案添加解释,包括适用的限制和假设。
      猜你喜欢
      • 1970-01-01
      • 2019-09-30
      • 2011-01-10
      • 2012-07-19
      • 1970-01-01
      • 1970-01-01
      • 2016-12-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多