我看过网上,发现了许多与我的问题密切相关的问题,但没有任何问题可以解决我的问题。它非常简单,我试图遍历我的电子邮件表来检查电子邮件是否存在,如果不存在,请继续添加它。事情是,它总是添加电子邮件,查询不返回任何东西(甚至它应该)。我也使用codeigniter,这有助于或使情况复杂化。
以下是方法:
public function add_email(){
$email = $this->input->post('email');
$query = $this->db->query("SELECT * FROM emails WHERE email LIKE '$email'");
$query->result();
if($query->num_rows() == 0){
$data = array(
'email' => $this->input->post('email'),
'name' => $this->input->post('name')
);
return $this->db->insert('emails', $data);
}
return FALSE;
}
提前谢谢
答案 0 :(得分:0)
我在用户登录模块的项目中做了同样的事情。
使用以下代码: -
function email_check($srt) {
$query = $this->db->get_where('emails', array('email_id' => $srt), 1);
if ($query->num_rows() == 1) {
return true;
} else {
return false;
}
}
function add_email() {
$email = filter_input(INPUT_GET, email, FILTER_SANITIZE_SPECIAL_CHARS);
$name = filter_input(INPUT_GET, name, FILTER_SANITIZE_SPECIAL_CHARS);
if ($this->email_check($email)) {
$data = array(
'email' => $this->input->post('email'),
'name' => $this->input->post('name')
);
return $this->db->insert('emails', $data);
} else {
echo 'email already exit';
}
}
答案 1 :(得分:0)
在将邮件(and you validate your post data)插入数据库之前说明您的邮件小写({{3}}),您可以执行以下操作
在控制器
中$data = array(
'email' => strtolower($this->input->post('email')),
'name' => $this->input->post('name')
);
$this->model_name->add_email($data);
在模型
中public function add_email($data) {
$this->db->where('email', $data['email']);
$this->db->from('emails');
if($this->db->count_all_results() == 0) {
return $this->db->insert('emails', $data);
} else {
return FALSE;
}
}