【问题标题】:DISTINCT mysql query within a foreach loopforeach 循环中的 DISTINCT mysql 查询
【发布时间】:2012-11-02 22:52:52
【问题描述】:

我需要查询数据库并返回不同的列值。查询在 foreach 循环中,并根据数组而变化。

$get_all_col_names = $this->db->list_fields($table_by_product);
//This will return "X_SIZE", "X_PRINT", "X_QTY"

现在我有一个 foreach 需要分别获取“X_SIZE”、“X_PRINT”和“X_QTY”的不同值。

foreach ($X_types as $X) {
   $this->db->select($X);
   $this->db->distinct();
   $qX = $this->db->get($table_by_product);
   return $qX->result_object();
}

当前设置的问题在于它只返回 X_QTY 的 DISTINCT 值,这是列表中的最后一个数组。

我需要为数组中的所有键返回不同的值。我怎样才能使这项工作?感谢您的帮助。

【问题讨论】:

  • 我不知道我是否知道你想要什么...但是在 foreach 中返回,将在第一个循环后返回。如果您希望返回所有结果,则必须在 foreach 之后返回并将结果添加到您返回的临时数组中。
  • 是的,这就是我想做的。我在 foreach 之前尝试了$X_types[] = array();,然后在循环之后我放了什么?你能澄清一下,并把它作为你的答案吗?你对我需要做的事情是正确的。谢谢
  • $resultArray = array(); foreach ($X_types as $X) { $this->db->select($X); $this->db->distinct(); $qX = $this->db->get($table_by_product); $resultArray[] = $qX->result_object(); } 返回 $resultArray;
  • @tenhouse 请发布官方答案,以便我接受您的回复并给予您适当的信任。谢谢

标签: php codeigniter activerecord foreach mysqli


【解决方案1】:

问题是您的 foreach 将在循环的第一轮之后返回,请尝试以下操作:

$resultArray = array(); 
foreach ($X_types as $X) { 
    this->db->select($X)$this->db->distinct(); 
    $qX = $this->db->get($table_by_product); 
    resultArray[] = $qX->result_object(); 
} 
return $resultArray; 

【讨论】:

    猜你喜欢
    • 2017-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-26
    • 2013-08-10
    • 1970-01-01
    • 1970-01-01
    • 2014-05-14
    相关资源
    最近更新 更多