如何更新数据,一旦它已经导入到excel文件?PHPExel,CodeIgniter

w41d8nur  于 2022-12-07  发布在  PHP
关注(0)|答案(1)|浏览(127)

我正在导入excel数据并将其插入到我的mysql数据库中,这已经成功了,我现在要做的是在我插入后更新。
有没有办法做到这一点?
例如:我的总数据是32,所以如果我再次导入Excel,它也应该是32,但如果我的Excel工作表中有任何变化,它应该更新。
控制器:

function import()
{
 if(isset($_FILES["file"]["name"]))
 {
    $path = $_FILES["file"]["tmp_name"];
    $object = PHPExcel_IOFactory::load($path);
    foreach($object->getWorksheetIterator() as $worksheet)
    {
        $highestRow = $worksheet->getHighestRow();
        $highestColumn = $worksheet->getHighestColumn();
        for($row=16; $row<=$highestRow; $row++)
        {
            $studentID = $worksheet->getCellByColumnAndRow(1, $row)->getValue();
            $name = $worksheet->getCellByColumnAndRow(2, $row)->getValue();
            $grade = $worksheet->getCellByColumnAndRow(5, $row)->getValue();
            $subject = $worksheet->getCellByColumnAndRow(2, 8)->getValue();

            if(isset($studentID)){
                if($name != null){
                    $data[$row] = array(
                    'studentID'  => $studentID,
                    'name'  => $name,
                    'grade' => $grade,
                    'subject' => $subject
                    );
                }
            }else{
                if($name != null){
                    $dataUpdate[$row] = array(
                    'studentID'  => $studentID,
                    'grade' => $grade,
                    'subject' => $subject
                    );
                }
            }
            
        }
    }
    
        if(isset($data)){
            $this->loading_model->insert($data);
        }

        if(isset($dataUpdate)){
            echo 'Something';
        }

        echo 'Data Imported successfully';
        
    } 
}

产品型号:

function insert($data)
{
    $this->db->insert_batch('tbl_college_grades', $data);
}

function update($data)
{
    $this->db->update_batch('tbl_college_grades', $data);
}
vm0i2vca

vm0i2vca1#

它从您要导入的数据开始。您需要一种方法来唯一标识Excel数据中的每一行。例如,如果您可以提供“Email”,它可能是一个很好的候选项。或者,“name”和“subject”的组合是唯一的?
您的数据库需要将此相同列(或组合)设置为唯一,以便与您正在导入的Excel数据匹配。
然后,您可以执行UPSERT,它将自动检查您要插入的行是否已经具有给定唯一键的匹配项,如果没有找到匹配项,它将使用当前数据(可能是新的)更新该行并创建新行。

相关问题