Php 如何从excel中转义重复的值,并尝试在Codeigniter中插入到数据库中?

Php 如何从excel中转义重复的值,并尝试在Codeigniter中插入到数据库中?,php,mysql,codeigniter,Php,Mysql,Codeigniter,亲爱的朋友,我正在使用下面的函数在Codeigniter中创建导入功能,但当从excel中选择循环时,我不知道如何在数据上发生重复值时进行转义 主键仅用于$in_val['in_no'],其他值可自由插入。 如何转义重复值并尝试将excel中的其他行插入数据库 这是我的功能 public function imported($file_paths) { $in_val = array(); $i = 0; $cell_array = $this-&

亲爱的朋友,我正在使用下面的函数在Codeigniter中创建导入功能,但当从excel中选择循环时,我不知道如何在数据上发生重复值时进行转义 主键仅用于$in_val['in_no'],其他值可自由插入。 如何转义重复值并尝试将excel中的其他行插入数据库

这是我的功能

public function imported($file_paths) {
        $in_val = array();
        $i = 0;
        $cell_array = $this->csvimport->get_array($file_paths);
        foreach ($cell_array as $row) {
            if ($i === 7000)break; {
                $in_val['user_id'] = 70;
                $in_val['in_no'] = (int) preg_replace("/(\D+\d{4})0*([1-9]+\d*)/i", "$2\n", trim($row['IN_number']));
                $in_val['fi_no'] = trim($row['Fir_obtic']);
                $in_val['paid_by'] = trim($row['Paid_by']);
                $in_val['in_per'] = str_replace('/', '-', trim($row['In_date']));
                $in_val['sale_by'] = trim($row['Sale_by']);
                $in_val['billed'] = trim($row['Billed']);
                $in_val['in_date'] = str_replace('/', '-', trim($row['In_date']));
                $in_val['top_up_num'] = trim($row['T_P_number']);
                $in_val['ffrom'] = trim(str_replace('/', '-', $row['From']));
                $in_val['fto'] = str_replace('/', '-', trim($row['to']));
                $in_val['pay_du_date'] = str_replace('/', '-', trim($row['Pay_due_date']));
                $in_val['bill_amount'] = trim(str_replace('/', '-', $row['Bill_Amount']));
                $in_val['bill_to'] = trim($row['Cust_name']); //customer name
                $in_val['receiv_date'] = trim($row['R_C_date']);
                $in_val['adds'] = trim($row['Address']);
                $in_val['bill_item'] = str_replace('/', '-', trim($row['Bill_Item']));
                $in_val['descr'] = trim($row['Description']);
                $in_val['in_type'] = strtolower(preg_replace("/(\D+\d{0})0*([0-9]+\d*)/i", "$1\n", trim($row['IN_number'])));
                $in_val['quant'] = trim($row['In_Quanity']);
                $in_val['unit_p'] = trim($row['In_Unit_P']);
                $in_val['amount'] = trim($row['Bill_Amount']);
                $in_val['total'] = trim($row['Total']);
                $in_val['status'] = 1;
                $in_val['amc'] = trim($row['Amount_Description']);
                $pri_val['user_id'] = 70;
                $pri_val['type'] = strtolower(preg_replace("/(\D+\d{4})0*([1-9]+\d*)/i", "$1\n", trim($row['IN_number'])));
                $pri_val['parent'] = 1;
                $pri_val['status'] = 1;
                $pri_val['in_no'] = (int) $in_val['in_no'];
                $pri_val['total'] = (int) trim($row['Total']);
                $pri_val['in_date'] = $in_val['in_date'];
                $this->db->insert('dbfinan_invoice', $in_val);
                $this->db->insert('prifix', $pri_val);
                $i++;
            }
        }
    }

请帮助

尝试添加条件和函数以签入如下表:


所以表中的$in_val['in_no']可以是唯一的

您如何知道它是重复的?主键用户id似乎总是设置为70。对不起,我漏掉了一句话。因为我只为$in_val['in_no']创建主键,这意味着您希望避免插入主键与插入的数据集相同的数据集是吗?检查重复的文件数据或表数据?@MobasherFasihy这是正确的。如果我使用此功能检查数据库中的行,并与我从Excel导入的更多行进行比较,则速度是否较慢,因为这是导入功能是。更多的数据当然也会产生更多的过程。我认为风险并不是最好的方法我现在很难从excel功能导入,因为我必须在没有值的情况下避免重复,这意味着如果在excel中有相同的值,它将尝试通过抛出重复的行来插入下一行,但我不知道如何做我认为这样的情况已经足够了
if($this->[yourmodal]->isExist($in_val['in_no'])==false)
{
  $this->db->insert('dbfinan_invoice', $in_val);
  $this->db->insert('prifix', $pri_val);
}