如果我有这样的功能:
public function access_1()
{
$this->db->set('Name', $name);
$this->db->set('Description', $desc);
$this->db->insert('access_user');
$id_access_1 = $this->db->insert_id();
return (isset($id_access_1)) ? _________ : FALSE;
}
在return (isset($id_access_1))
然后在空白处( _____ ),它将处理第二个函数并在该函数中设置$id_access_1
。
像这样:
public function access_2()
{
$this->db->set('Access_1_ID', ____________);
$this->db->set('Dept', $dept);
$this->db->set('Section', $section);
$this->db->insert('access_dept');
$id_access2 = $this->db->insert_id();
return (isset($id_access2)) ? $id_access2 : FALSE;
}
以下是控制器,函数access_2()
位于for each()
内,如下所示:
$this->form_validation->set_rules('name', 'Name', 'required|xss_clean');
$this->form_validation->set_rules('desc', 'Description', 'required|xss_clean');
if ($this->form_validation->run() == true)
{
$this->structure_management->insert_batch($data);
$data = $this->input->post('data');
$access_2Data = json_decode($data,TRUE);
foreach ($access_2Data as $getAll)
{
$this->structure_management->access_2($getAll);
}
else{
}
在我现在的程序中,当我单击SUBMIT按钮时,它将处理这两个函数,但后来我知道如果它在access_1()
中,我将如何获得函数AUTO_INCREMENT
的ID。你会在seconde函数access_2()
中注意到$this->db->set('Access_1_ID', ____________);
中有一个空白( __________ ),因为我会在第一个中输入ID
函数access_1()
。它只为函数access_1()
设置一行,而在函数access_2()
中它将迭代,因为它在for each()
内。但是每次迭代我只会在access_1()
中设置数据库时只有一个ID。
如果您有疑问,如果您认为我的解释似乎不可理解,请随时问我。 提前谢谢。
答案 0 :(得分:1)
您似乎对isset
函数的作用感到困惑。你已经
$id_access_1 = $this->db->insert_id();
作为此次通话的结果,$id_access_1
将始终设置;相反,你需要检查它的设置。我不知道你的$this->db
类的细节,但是为了论证,我假设方法insert_id
返回新插入的行的ID或{{ 1}}出错(这是PHP中的标准)。
然后您需要做的是检查您是否在第一次通话时遇到FALSE
;如果没有,则调用第二个函数并返回其结果,否则返回FALSE。在第二个功能中,您根本不需要检查任何内容,因为只需将调用结果返回到FALSE
,如果出现问题或者返回insert_id
,则会返回{ - 1}} - 因此您可以只需返回结果。
你最终会得到这样的东西:
FALSE