【问题标题】:Call to a member function insert() on null. Codeigniter在 null 上调用成员函数 insert()。代码点火器
【发布时间】:2017-03-09 13:50:08
【问题描述】:

大家好,我在提交 CI 3 网站的表单时遇到以下错误:

致命错误:在 null 上调用成员函数 insert()

此错误发生在第 20 行,即:

$query =  $this->db->insert('temp_subscribed_users', $data);

这是完整的功能:

public function add_temp_user($key)
{
    echo "hello";

    $data = array(


        'TEMP_EMAIL' => $this->input->post('email'),

        'TEMP_KEY' => $key

    );

    echo var_dump($data);

    $query =  $this->db->insert('temp_subscribed_users', $data);

    if($query)
    {

        return true;  
    }else{

        return false; 

    }
}

我不确定 null 是什么意思。表名是正确的,我做了一个 var_dump 来确认数组正在被填充。我还通过回显“hello”来确保我正在进入该函数,并且它正在输出到页面上。

感谢您的帮助!

附加信息:使用 XAMPP localhost 运行。

【问题讨论】:

  • 你在加载“db”之前?
  • @Deep 是的,我让它自动加载数据库
  • 您也可以在运行插入之前手动加载库。你可以使用$this->load->library('database');

标签: php mysql database codeigniter


【解决方案1】:

首先,您没有使用 codeigniter 的 MVC 模型。 Controller 用于函数,Model 用于数据库连接。

首先自动加载您的数据库,如果不只是将其放入代码中。但它应该是这样的。

控制器功能

public function add_temp_user($key)
{
    echo "hello";
    $this->load->model('MY_MODEL');
    //If you're not autoloading db include the next line
    //$this->load->library('database');
    $data = array(
        'TEMP_EMAIL' => $this->input->post('email'),
        'TEMP_KEY' => $key
    );

    echo var_dump($data);
    //If you confirmed the data var dumped

    $success = $this->MY_MODEL->insert_to_db($data);

    if($success == true)
    {
        //Do something
    }
    else
    {
        //Do something
    }
}

型号

public function insert_to_db($data)
{
  $query =  $this->db->insert('temp_subscribed_users', $data);
  //
  if($query)
  {
    return true;  
  }
  else
  {
    return false; 
  }
}

确保 TEMP_EMAIL 和 TEMP_KEY 是您数据库中的列,而 temp_subscribed_users 是您的表名

【讨论】:

    【解决方案2】:

    加载数据库,然后调用插入函数。 Codeigniter 不会因为性能问题自动加载数据库。

    $this->load->database();
    $query =  $this->db->insert('temp_subscribed_users', $data);
    

    【讨论】:

      【解决方案3】:

      尝试通过进入 config 文件夹中的 autoload.php 并在库的阵列上添加数据库来解决您的问题,如下所示:$autoload['libraries'] = array('database');

      【讨论】:

        【解决方案4】:
        1. 请检查对象是否已创建。
        2. 检查该类中的对象是否可用

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-01-30
          • 1970-01-01
          • 1970-01-01
          • 2011-10-26
          • 2014-09-09
          • 1970-01-01
          • 2017-08-09
          • 2015-07-07
          相关资源
          最近更新 更多