duan0821 2016-06-27 13:32
浏览 71
已采纳

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

I am having some problem. I am trying to pass a variable from a controller to a model, but I always get a NULL value ON THE MODEL. Anyone can point out what is wrong with my code?

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']);

}

Model

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

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

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

    return $value;
}

When I run this, I get

INSERT INTO `test` (`testid`) VALUES (NULL)
  • 写回答

1条回答 默认 最新

  • duanjin9035 2016-06-28 01:27
    关注

    You called insertion twice with two different 'arguments'. The first one $insertion = $this->model_register->insertion(); was called without parameters and the second was called with parameters, $insertion = $this->model_register->insertion($data['userid_admin']);

    This condition may fall under Method Overloading, a condition where the same method is created but with different parameters and as such can perform two different functionalities.

    If you want to use the same function in both cases, however the best fix is to pass a default NULL value as the parameter in the Model file, like this

    public function insertion($x = NULL) {
        // Function code appears here
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 mysql , 用自己创建的本地主机和用户名 登录不上
  • ¥15 关于#web项目#的问题,请各位专家解答!
  • ¥15 vmtools环境不正常
  • ¥15 请问如何在Ubuntu系统中安装使用microsoft R open?
  • ¥15 jupyter notebook
  • ¥30 informer时间序列预测
  • ¥20 SSR引物多态性分析
  • ¥15 大漠插件在Win11易语言注册调用和免注册灵异事件,VS上注册调用完全没问题
  • ¥15 Addressable缓存机制做热更新的问题
  • ¥15 微信开发者工具vant组件