Php Codeigniter数据库查询问题
我在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
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;为了或代替和更多@