防止数据库Codeigniter中的重复条目

防止数据库Codeigniter中的重复条目,codeigniter,codeigniter-3,Codeigniter,Codeigniter 3,我想知道如何防止我的上传功能使用uid向数据库中插入重复条目 public function upload(){ if(!empty($_FILES['uploaded_file'])) { $path = FCPATH . "/file_attachments/signature_file/"; $path = $path . basename( $_FILES['uploaded_file']['name']);

我想知道如何防止我的上传功能使用uid向数据库中插入重复条目

public function upload(){
        if(!empty($_FILES['uploaded_file']))
        {
            $path = FCPATH . "/file_attachments/signature_file/";
            $path = $path . basename( $_FILES['uploaded_file']['name']);

            $base64 = base64_encode(file_get_contents($_FILES['uploaded_file']['tmp_name']));

            if(move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $path)) 
            {
                $data = array (
                        'uid' => $this->user->get_uid(),
                                    'image' => $base64,
                                    'name'  => basename( $_FILES['uploaded_file']['name']),
                                );


                $this->load->database('employee');         
                $this->db->insert('signatures', $data);

    //              echo "The file ".  basename( $_FILES['uploaded_file']['name']). 
    //              " has been uploaded";
                  $alert  = "The file ".  basename( $_FILES['uploaded_file']['name']). 
                  " has been uploaded";
                     redirect(base_url() . "signature_uploader/search/?id=" . $alert);                
            } 
            else
            {
                // echo "There was an error uploading the file, please try again!";
                $alert  ="There was an error uploading the file, please try again!";
                redirect(base_url() . "signature_uploader/search/?id=" . $alert); 
            }       
        }        
}
这是我的视图文件。我没有时间编辑这里不必要的东西。问题仍然是,如果它有重复的条目,数据库错误仍然会出现,这就是我要阻止的。干杯

<div class="bod">
<div class="insta">
    <form enctype="multipart/form-data" style="padding-top: 10px" name="exit_form" method="post" action="<?= base_url() ?>signature_uploader/upload">
    <input type="hidden" name="uid" value="<?= $agent->get_uid() ?>" />
    <input type="hidden" name="gid" value="<?= $agent->get_gid() ?>" />
    <input type="hidden" name="fname" value="<?= $agent->get_fname() ?>" />
    <input type="hidden" name="lname" value="<?= $agent->get_lname() ?>" />
    <div style="text-align: center; font-size: 25pt; margin-bottom: 15px">Signature Uploader</div>
    <table width="105%">
        <tr>
            <td width="40%"><strong>Name: </strong><input class="textinput" disabled="disabled" type="text" name="full_name" id="textfield3" size="35" value="<?= $agent->get_fullName() ?>" /></td>
        <tr/>
        <tr>
            <td><label>Upload Image File:</label><br /> <input name="uploaded_file" type="file" accept=".png" required/>
        </tr>
    <table/>
    <br />
    <input type="submit" value="Submit" class="button1" />
    </form>
    <br/>
&nbsp;
</div>


您可以检查此类文件是否存在,但通常在创建上载文件的代码时,有一个函数将为我们上载的每个文件生成唯一的名称。因此,在这种情况下,它将具有具有不同名称的重复条目


我看到的唯一方法是创建一个函数来检查数据库中是否已经存在文件名。

您可以检查此类文件是否存在,但通常在创建上载文件的代码时,有一个函数将为我们上载的每个文件生成唯一的名称。因此,在这种情况下,它将具有具有不同名称的重复条目


我看到的唯一方法是创建一个函数来检查数据库中是否已经存在文件名。

您可以使用from Codeigniter表单验证来防止重复输入:

首先,必须在表单视图中获取
uid
,如下所示:

<input type="hidden" name="uid" value="<?php echo $this->user->get_uid() ?>">

您可以使用from Codeigniter表单验证来防止重复输入:

首先,必须在表单视图中获取
uid
,如下所示:

<input type="hidden" name="uid" value="<?php echo $this->user->get_uid() ?>">

检查插入前是否存在与ID相对应的记录检查插入前是否存在与ID相对应的记录谢谢你这段代码,我想这会回答我的问题,但如果($this->form\u validation->run()==FALSE)输入代码的部分不起作用。怎么会?无论哪种方式,else语句都运行平稳,没有任何错误。如果我能将它重定向到一个错误视图页面,如果它是重复的,那就太好了。希望你能帮助我。谢谢如果你的问题解决了,请接受答案,因为上面的代码与上次的代码仍然存在相同的问题,但是上面给出的代码的逻辑应该可以很好地回答问题。现在我想知道这是否与我的环境有关?你能发布你的表单视图吗?谢谢你的代码,我想这会回答我的问题,但是如果($this->form\u validation->run()==FALSE)不起作用,我应该在哪里输入代码。怎么会?无论哪种方式,else语句都运行平稳,没有任何错误。如果我能将它重定向到一个错误视图页面,如果它是重复的,那就太好了。希望你能帮助我。谢谢如果你的问题解决了,请接受答案,因为上面的代码与上次的代码仍然存在相同的问题,但是上面给出的代码的逻辑应该可以很好地回答问题。现在我想知道这是否与我的环境有关?你能发布你的表单视图吗?