在null上调用成员函数insert()。笨

时间:2016-10-27 02:22:47

标签: php mysql database codeigniter

大家好,我在为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来确认正在填充数组。我还确保通过回声"你好"来进入这个功能。它正在输出到页面上。

感谢任何帮助,谢谢!

其他信息:使用XAMPP localhost运行。

4 个答案:

答案 0 :(得分: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
    }
}

<强> MODEL

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是您的表名

答案 1 :(得分:0)

加载数据库然后调用insert函数。 Codeigniter不会自动加载数据库以解决性能问题。

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

  1. 请检查是否创建了对象。
  2. 检查该类中的对象是否可用