我正在探索codeigniter很长一段时间,我在探索它时遇到的大部分问题已经通过谷歌搜索解决了,但我现在面临的问题有点奇怪。所以情况就是这样。我有一个控制器,如果验证后没有错误,将验证表单并使用数组将表单中的所有输入传递给模型。
我在同一个控制器中有另一个功能,它会在被叫时发送电子邮件。所以我想要做的是验证表单,使用数组将所有输入发送到模型并将其插入数据库,然后将电子邮件发送到用户的电子邮件地址。
以下是注册控制器代码的一部分:
if($this->form_validation->run() == FALSE){
//load custom config
$this->config->load('site_config', TRUE);
$this->load->library('session');
$this->load->helper('form');
//retrieve data
$data['site_title'] = $this->config->item('site_title', 'site_config');
$data['site_login'] = $this->config->item('site_login', 'site_config');
$data['site_url'] = $this->config->item('site_url', 'site_config');
$data['img_folder_path'] = $this->config->item('img_folder_path', 'site_config');
$this->load->view('view_header', $data);
$this->load->view('view_signup',$data);
$this->load->view('view_footer');
}else{
$this->load->model('Adduserinfointoactivationtable');
$user_infos = array('first_name' => $this->input->post('first_name'),
'last_name' => $this->input->post('last_name'),
'email' => $this->input->post('email'),
'tel' => $this->input->post('tel'),
'fax' => $this->input->post('fax'),
'add_1' => $this->input->post('add_1'),
'add_2' => $this->input->post('add_2'),
'city' => $this->input->post('city'),
'post_code' => $this->input->post('post_code'),
'state' => $this->input->post('state'),
'password' => sha1($this->input->post('pass_2')),
'activation_code' => sha1(sha1($this->input->post('email').$this->input->post('pass_2'))),
);
$this->Adduserinfointoactivationtable->addUserInfo($user_infos);
$this->send_mail();
}
以下是模型:
public function addUserInfo ($user_infos){
$sql = "INSERT INTO tbl_user_Account (email_add, activation_code, fname, lname, tel, fax, add1, add2, city, post_code, state, password) VALUES (?,?,?,?,?,?,?,?,?,?,?,?);";
$query = $this->db->query($sql, array($user_infos['email'], $user_infos['activation_code'], $user_infos['first_name'], $user_infos['last_name'], $user_infos['tel'], $user_infos['fax'], $user_infos['add_1'], $user_infos['add_2'], $user_infos['city'], $user_infos['post_code'], $user_infos['state'], $user_infos['password']));
$query->result_array();
}
当我将$this->send_mail();
放在其他地方后,它就可以了。我做了一些测试,电子邮件功能正常。但是当我以$this->Adduserinfointoactivationtable->addUserInfo($user_infos);
之后的方式调用它时,它不会发送电子邮件。我也注意到无论我在$this->Adduserinfointoactivationtable->addUserInfo($user_infos);
之后做了什么,例如加载视图或回显某些东西,它都不起作用。
有人可以就此提出建议吗?
答案 0 :(得分:1)
我认为您的问题可能是,根据CodeIgniter documentation,如果执行“插入”类型查询,$this->db->query()
会返回一个布尔值。
在你的情况下会发生这种情况。因此,您可能通过执行$query->result_array()
来创建致命错误。
作为一个简单的修复,您可以尝试以下方法:
if (is_object($query)) {
return $query->result_array();
} else {
return $query;
}
答案 1 :(得分:0)
您没有在其他部分加载任何视图,是吗?重定向到相同的功能或成功功能页面。