我遇到了一些问题。我试图将变量从控制器传递给模型,但我总是在模型上得到一个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)
答案 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
}