是否有可能变量isset()然后处理第二个函数?

时间:2014-04-03 07:58:42

标签: php

如果我有这样的功能:

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。

如果您有疑问,如果您认为我的解释似乎不可理解,请随时问我。 提前谢谢。

1 个答案:

答案 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