【问题标题】:How to check column record present or not if not display error message else insert into database using codeigniter?如果不显示错误消息,如何检查列记录是否存在,否则使用codeigniter插入数据库?
【发布时间】:2016-07-16 10:44:38
【问题描述】:

我想检查记录是否存在然后触发错误消息,否则使用 codeigniter 插入数据库

model.php

public function insert_profile($data){
     $this->db->insert('profile', $data);      
}

controller.php

public function empprofile(){
        $this->form_validation->set_rules('txtname', 'Name', 'trim|required|min_length[6]',
            array(
                'required' => 'enter your name'));

        $this->form_validation->set_rules('txtemail', 'Email', 'trim|required|valid_email',
            array(
                'required' => 'enter email'));

        $this->form_validation->set_rules('txtvpno', 'Vastipatrak No', 'trim|required|min_length[11]',
            array(
                'required' => 'select Vastipatrak No'));

        $this->form_validation->set_rules('txtfield', 'Field', 'trim|required',
            array(
                'required' => 'enter Field'));

        $this->form_validation->set_rules('txtcontact', 'Phone No', 'trim|required|min_length[10]|max_length[10]',
            array(
                'required' => 'select Phone No'));

        $this->form_validation->set_rules('txtexp', 'Experience', 'trim|required',
            array(
                'required' => 'enter Experience'));

        $this->form_validation->set_rules('txtage', 'Age', 'trim|required',
            array(
                'required' => 'enter age'));        

        if($this->form_validation->run() ==FALSE){
            $this->load->view('submitprofile');         
        }
        else{           
            $data = array(
                'Name' => $this->input->post('txtname'),
                'Email' => $this->input->post('txtemail'),
                'VPNo' => $this->input->post('txtvpno'),
                'Field' => $this->input->post('txtfield'),
                'Phone' => $this->input->post('txtcontact'),
                'Exp' => $this->input->post('txtexp'),
                'Age' => $this->input->post('txtage')
            );
            $result= $this->mymodel->insert_profile($data);
            if ($result == FALSE) {
                echo "Vastipatrak No already exist";                    
            } 
            elseif ($result == 0) {
                echo "Something Went Wrong";
             } 
            else{
                echo "You have successfully registred with KDOJobs";
            }
            redirect(site_url('talents'));
        }
    }

如何检查记录是否存在,如果存在则显示错误

【问题讨论】:

  • 任何唯一字段??
  • 'VPNo' 是 @Abdulla 的唯一字段
  • @RomilLodaya 所以你需要在插入数据库之前检查是否存在任何东西,如果存在 retun 错误,如果不存在则不是?是吗??
  • 是的,你是正确的@Abdulla

标签: php mysql codeigniter-3


【解决方案1】:

在模型中

public function insert_profile($data)
{
    $VPNo = $data['VPNo'];
    $query = $this-db->query("SELECT * FROM profile WHERE vpno = '$VPNo' ");
    $result = $query->result_array();

    if (count($result) > 0) 
    {
        # data exist
        return FALSE;
    } 
    else 
    {
        $this->db->insert('profile', $data);
        if ($this->db->affected_rows() > 0) 
        {
            return TRUE;
        } 
        else 
        {
            return 0;
        }       
    }
}

在控制器中

$result = $this->mymodel->insert_profile($data);

if ($result == FALSE) {
    $this->session->set_flashdata('error', 'Data exist');
} 
elseif ($result == 0) {
    $this->session->set_flashdata('error', 'Something Went Wrong');
 } 
else{
    $this->session->set_flashdata('success', 'Successfullly Inserted');
}

/*
    In your code you using redirect(). So its better to add session like Flash Data. 
    So once you redirect as soon as function success you can access it in redirected page.

    Setting Flash Data
        If error
            $this->session->set_flashdata('error', 'Data exist');
            $this->session->set_flashdata('error', 'Something Went Wrong');

        If Success
            $this->session->set_flashdata('success', 'Successfullly Inserted');

    Accessing Flash data

        if(!empty($this->session->flashdata('error'))
        {
            echo $this->session->flashdata('error');
        }


*/

redirect(site_url('talents'));

链接

  1. Flashdata in Codeigniter

【讨论】:

  • where 子句应该包含什么内容?
  • $query = $this->db->query("SELECT * FROM profile WHERE VPNo=".'$data');
  • @RomilLodaya 没有回应这个并发布他的价值$data['VPNo']
  • $query = $this->db->query("SELECT * FROM profile WHERE VPNo=".$data['VPNo']);
  • @RomilLodaya 没有评论查询代码,只需添加此代码并发布数据。 echo $data['VPNo']
【解决方案2】:

我认为有更好的方法来使用 is_unique[table.coloum_name]你正在编辑..见下文..我使用它并且对我来说工作得很好..is_unique[table.coloum_name]希望它有所帮助

$this->form_validation->set_rules('txtname', 'Name', 'trim|required|min_length[6]|is_unique[table.coloum_name]', array( 'required' => 'enter your name'));

https://www.codeigniter.com/userguide3/libraries/form_validation.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-09
    • 2016-01-06
    • 1970-01-01
    • 2021-03-29
    • 2019-11-20
    • 2013-03-31
    • 2013-08-22
    • 2018-09-02
    相关资源
    最近更新 更多