Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Codeigniter数据库查询问题_Php_Codeigniter - Fatal编程技术网

Php Codeigniter数据库查询问题

Php Codeigniter数据库查询问题,php,codeigniter,Php,Codeigniter,我在codeigniter中执行以下查询,但不知道如何使第二个查询工作。如何从第一个查询中获得一个值数组,并在第二个查询中使用它 function application() { $user_id = $this->tank_auth->get_user_id(); $this->db->select('app_id')->from('using')->where('user_id' , $user_id); $query = $thi

我在codeigniter中执行以下查询,但不知道如何使第二个查询工作。如何从第一个查询中获得一个值数组,并在第二个查询中使用它

function application()
{
    $user_id = $this->tank_auth->get_user_id();
    $this->db->select('app_id')->from('using')->where('user_id' , $user_id);
    $query = $this->db->get();

    $row = $query->result_array();

    if ($query->num_rows() > 0) :
    $this->db->select('app_name')->from('applications')->where('id' , $row['app_id']);
    $body['query'] = $this->db->get();
    endif;

    $this->load->view('apps_view', $body);
如果我注释掉第二个查询和var_dump$行; 它给了我: array2{[0]=>array1{[“应用程序id”]=>string1“2”}[1]=>array1{[“应用程序id”]=>string1“3”}

我决定执行多个查询而不是联接,因为我将添加其他列以从第二个查询中进行选择

谢谢您的帮助。

您是否希望第一个查询只返回一行

如果是,则应使用:

$query = $this->db->get();

$row = $query->row();

$app_id = $row->app_id;
//etc
你的问题不清楚

如果第一个查询返回或可以返回多行,则需要执行以下操作:

$query = $this->db->get();

if ($query->num_rows() > 0) :
    foreach($query->result_array() as $row)
    {
        $this->db->select('app_name')
                 ->from('applications')
                 ->where('id' , $row['app_id']);
    }

    $body['query'] = $this->db->get();
endif;
// etc
你很可能需要调整代码,因为我不确定你想要的结果是什么。你看到区别了吗

如果您返回result_array,您将得到一个结果数组因此,为什么您的var_转储有[0]=>array1等-返回的每一行都有一个数组

如果您只希望/期望从第一个查询返回一个结果,则应改用row

希望这是有意义的——应该是朝着正确的方向推进

编辑 事实上,这可能是正确的语法:

$query = $this->db->get();

if ($query->num_rows() > 0) :
    $this->db->select('app_name')->from('applications');
    foreach($query->result_array() as $row)
    {
        $this->db->where('id' , $row['app_id']);
        // build the `where...` string with iteration/result/row
    }

    $body['query'] = $this->db->get(); // now we get the data.
endif;
// etc

第二个查询返回什么?罗斯,谢谢你的帮助。您对我的第一个查询返回多行的假设是正确的。对不起,我没有明确说明这一点。数据库查询最终是从id为'2'和id为'3'的事件中选择事件名称,而我希望它是在id为2或3的位置。对不起,现在我可能真的把您弄糊涂了。我试图使这项工作同时适用于应用程序和事件,因此这里的数据库查询不同,但它仍然应该是完全相同的。它应该是这样的:从id为“2”和“3”的应用程序中,查询结果为SELECT app_name,而我希望它是从id为“2”或id为“3”的应用程序中选择app_name。如何更改语句以更正此查询?再次抱歉造成混淆。您可以使用$this->db->或\u where;为了或代替和更多@