【问题标题】:How to run a query inside foreach loop?如何在 foreach 循环中运行查询?
【发布时间】:2019-05-26 05:58:30
【问题描述】:

我有一个在 foreach 循环中运行的查询,但它只在下面提到的代码之后一次运行:

public function functional_job($functional)
    {
        $functions = explode(",",$functional);
        foreach($functions as $row)
        {
            $this->db->select('*');
            $this->db->from('job');
            $this->db->where('functional',$row);
            $query = $this->db->get();if($query->num_rows()>0)
            {
                $result = $query->result_array();
                return $result;
            }
            else
            {
                $this->session->set_flashdata('msg','<p style="color:red;font-weight: 600;">No Job Found.</p>');
            }
        }
    }

在哪里$functional = IT,marketing,ecommerce。当我点击查询时,它只运行一个像SELECT * FROM job WHERE functional = 'IT' 这样的查询。但我希望它运行三遍,即SELECT * FROM job WHERE functional = 'IT' SELECT * FROM job WHERE functional = 'marketing' SELECT * FROM job WHERE functional = 'ecommerce'

【问题讨论】:

  • 目前,如果返回结果,函数将返回该值并停止处理
  • 你在第一次得到一些数据时返回return $result;。还可以使用IN 进行查询,您将在 1 个查询中获得所有结果。 (类似于functional in( 'IT','marketing','ecommerce')
  • 如何使用IN@NigelRen
  • 因为我不确定您是如何获取数据的(您是否使用 ORM 等)我不确定。

标签: php codeigniter mysqli


【解决方案1】:

您的代码将返回一个结果的值并停止处理。

您可以更改代码以将结果存储在数组中,然后返回?

public function functional_job($functional){

    $functions = explode(",",$functional);

    $results = array();

    foreach($functions as $row)
    {
        $this->db->select('*');
        $this->db->from('job');
        $this->db->where('functional',$row);
        $query = $this->db->get();
        if($query->num_rows()>0)
        {
            $results[] = $query->result_array();
        }
        else
        {
            $this->session->set_flashdata('msg','<p style="color:red;font-weight: 600;">No Job Found.</p>');
        }
    }

    return $results;
}

如前所述,您还可以更改查询以使用 MySql 的 IN 功能。

SELECT * FROM job WHERE functional IN ('IT', 'marketing', 'ecommerce')

如果不知道 codeigniter,它可能看起来像:

$this->db->select('*');
$this->db->from('job');
$this->db->where_in('id', $functional);
$query = $this->db->get();

【讨论】:

    猜你喜欢
    • 2017-06-04
    • 1970-01-01
    • 1970-01-01
    • 2013-11-15
    • 2021-01-30
    • 2016-06-29
    • 2016-12-18
    • 1970-01-01
    • 2019-07-15
    相关资源
    最近更新 更多