在codeigniter中将变量从控制器传递到模型时获取Null值

时间:2016-06-27 13:32:07

标签: php codeigniter

我遇到了一些问题。我试图将变量从控制器传递给模型,但我总是在模型上得到一个NULL值。任何人都可以指出我的代码有什么问题吗?

CONTROLLER

public function test()
{
    $this->load->model('model_register');

    //ID Creation to be inserted into the database
    $country_prefix = $this->model_register->countryprefix();
    $org_prefix = $this->model_register->organizationprefix();
    $insertion = $this->model_register->insertion();

    $userid_base = $country_prefix['0']['c_code'].$org_prefix['0']['id'];

    $basenum = "000000000";
    $base_length = strlen($basenum);
    $id_length = strlen($org_prefix['0']['id']);

    $computation = $base_length - $id_length;

    $id_base_array = array();

    for ($i = 0; $i < $computation; $i++)
    {
        array_push($id_base_array, "0");
    }

    $id_base = implode("",$id_base_array);

    $userid_admin = $country_prefix['0']['c_code']."ADM".$id_base.$org_prefix['0']['id'];

    //Insert Data

    //data-mix
    $data['userid'] = $userid_base;
    $data['baselength'] = strlen($basenum);
    $data['id_length'] = strlen($org_prefix['0']['id']);
    $data['result'] = $computation;
    $data['id_base'] = implode("",$id_base_array);
    $data['userid_admin'] = $userid_admin;
    $data['insertion'] = $insertion;

    $insertion = $this->model_register->insertion($data['userid_admin']);

}

模型

public function insertion($x)
{
    $value = $x;

    $data = array(
        'testid' => $value,
    );

    $this->db->insert('test',$data);

    return $value;
}

当我运行时,我得到了

INSERT INTO `test` (`testid`) VALUES (NULL)

1 个答案:

答案 0 :(得分:0)

您使用两个不同的“参数”调用了两次插入。第一个$insertion = $this->model_register->insertion();被调用而没有参数,第二个被调用参数$insertion = $this->model_register->insertion($data['userid_admin']);

此条件可能属于Method Overloading,这是一种创建相同方法但具有不同参数的条件,因此可以执行两种不同的功能。

如果要在两种情况下使用相同的功能,但最好的解决方法是将默认的NULL值作为模型文件中的参数传递,如下所示

public function insertion($x = NULL) {
    // Function code appears here
}