重复行CodeIgniter

时间:2013-11-19 15:49:45

标签: php mysql codeigniter

我在“订阅”模型中提出了“添加”功能的问题。 由于某种原因,1%的注册被复制(2次甚至最多5次)。

这是我使用的代码:

public function add($service, $phone, $sushi_subscription_id, $answer_id, $affiliate_id, $ip, $query, $invite_type, $invite_msg_id)
{
    $this->db->set('service_id', $service->id);
    $this->db->set('sushi_service_id', $service->sushi_service_id);
    $this->db->set('phone', $phone);

    if ($sushi_subscription_id)
    {
        $this->db->set('sushi_subscription_id', $sushi_subscription_id);
    }

    $this->db->set('answer_id', $answer_id);
    if ($affiliate_id)
    {
        $this->db->set('affiliate_id', $affiliate_id);
    }

    $this->db->set('added', 'NOW()', FALSE);

    $this->db->set('active', 1);
    $this->db->set('ip', $ip);

    $this->db->set('query', $query);

    if ($invite_type)
    {
        $this->db->set('invite_type', $invite_type);
    }

    if ($invite_msg_id)
    {
        $this->db->set('invite_msg_id', $invite_msg_id);
    }

    return ($this->db->insert($this->_table_name)) ? $this->db->insert_id() : FALSE;
}

任何想法我怎么能避免这种幸福?行完全一样。 service_id,phone,active,甚至是添加的日期!

2 个答案:

答案 0 :(得分:1)

我认为这段代码可以帮助你......

//model
function add($data){
        $this->db->insert($this->table, $data);
        $this->session->set_flashdata("message", "Record successfully created.");
}


//in your controller
 function create(){
        $data = array( 'service_id'             => $this->input->post('service_id'),
                        'sushi_service_id'      => $this->input->post('sushi_service_id'),
                        'phone'                 => $this->input->post('phone'),
                        'sushi_subscription_id' => $this->input->post('sushi_subscription_id'),
                        'answer_id'             => $this->input->post('answer_id'),
                        'affiliate_id'          => $this->input->post('affiliate_id'),
                        ''                      => $this->input->post(), // and so on and so on just like that copy and do that
                        //add more here
                        );
        $this->"model name"->add($data);
    }


//view
<form action="<?=site_url('controller_name/create');?>" method = "POST">//the word create is the function name and dont forget to change the controller name
    <input type="text" name="service_id"/>
    <input type="text" name="sushi_service_id"/>
    <input type="text" name="phone"/>
    //and so on and so on....just copy and do like that
    <input type="submit"/>
</form>

答案 1 :(得分:1)

虽然它并非完全无关紧要,但建立适合您要求的通用功能或模块非常有用。这是check_duplicate函数,用作检查DB中重复数据条目的通用函数。这是函数

function _check_duplicate($table_name,$param)
{
    $row_count=$this->db->get_where($table_name,$param)->num_rows();
    if(count($row_count>0))
    {
        return true;
    }
    else
    {
        return false;
    }
}

这是你如何调用这个函数;

if($this->_check_duplicate('table_name',array('param1'=>$param1,'param2'=>$param2)))
{
    // redirect to some page
}
else
{
    // do something, insert or update
}

对于参数,您可以根据需要传递任意数量的参数。此功能在控制器中可以是通用的,也可以是通用模块的一部分。这取决于你如何使用它。