大家好,我在为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运行。
答案 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)