防止在Codeigniter中重复输入

时间:2018-04-09 14:08:03

标签: php arrays sql-server codeigniter codeigniter-3

如何防止在codeigniter中重复输入? 以下是代码: -

$params = array('value1' => 'test_value', 'value2' => 'test_value');
$this->db->insert('table_name',$params);

2 个答案:

答案 0 :(得分:1)

防止重复条目插入数据库的两种方法,

<方法1

您可以在控制器文件中使用$this->form_validation->set_rules,您可以验证输入值

示例:

在控制器

$this->form_validation->set_rules('value1', 'value1 field label', 'trim|required|xss_clean|is_unique[table_name.value1]');
$this->form_validation->set_rules('value2', 'value2 field label', 'trim|required|xss_clean|is_unique[table_name.value2]');
$this->form_validation->set_message('is_unique', '%s is already exists');
if ($this->form_validation->run() === TRUE){
    // load your model function here
    $this->model_name->insert();
}

在模型中

public function insert(){
    $postdata = $this->input->post();  
    extract($postdata);
    $this->db->insert('table_name', compact('value1','value2'));
    return ($this->db->trans_status()) ? $this->db->insert_id() : false;
}
<方法2

在插入

之前验证模型文件中的值
$params = array('value1' => 'test_value', 'value2' => 'test_value');
extract($postdata);
if($this->db->limit(1)->get_where('table_name', compact('value1'))->num_rows() === 0 && $this->db->limit(1)->get_where('table_name', compact('value2'))->num_rows() === 0){
    $this->db->insert('table_name', $params);
}
return ($this->db->trans_status()) ? $this->db->insert_id() : false;

答案 1 :(得分:-1)

模型申请

function isVarExists($ table,$ var){$ query = $ this-&gt; db - &gt; select('*') - &gt; where($ var) - &gt; get($ table) - &gt; NUM_ROWS(); return $ query; }

控制器

function validate_user_email(){$ uName ['email'] = $ this-&gt; input-&gt; post('email'); $ isUNameCount = $ this-&gt; User_model-&gt; isVarExists('user',$ uName); if($ isUNameCount&gt; 0){echo'false'; } else {echo'true'; }}