如何在php中使用xls文件检查条件

如何在php中使用xls文件检查条件,php,filereader,phpexcelreader,Php,Filereader,Phpexcelreader,在这里,我在php中使用xls文件读取器,它工作正常,我有一个逻辑,xls文件我正在获取徽章编号(4565)和月份(2017年1月),现在我想检查徽章编号和月份数据是否已经存在,假设数据为exixts意味着我不允许插入新记录,假设notexits意味着我想允许插入新记录,如何才能做到这一点,因为xls工作表让我感到困惑 <?php include 'excel_reader.php';// include the class $groupfile ='test.xls'; $excel =

在这里,我在php中使用xls文件读取器,它工作正常,我有一个逻辑,xls文件我正在获取徽章编号(4565)和月份(2017年1月),现在我想检查徽章编号和月份数据是否已经存在,假设数据为exixts意味着我不允许插入新记录,假设notexits意味着我想允许插入新记录,如何才能做到这一点,因为xls工作表让我感到困惑

<?php
include 'excel_reader.php';// include the class
$groupfile ='test.xls';
$excel = new PhpExcelReader;
$excel->read($groupfile);
function sheetData($sheet) {
    $result = ''; 
    $row = 2;
    while($row <= $sheet['numRows']) {
        $id = isset($sheet['cells'][$row][1]) ? $sheet['cells'][$row][1] : ''; 
        $loan_month = isset($sheet['cells'][$row][2]) ? $sheet['cells'][$row][2] : ''; 
        $badge_number = isset($sheet['cells'][$row][3]) ? $sheet['cells'][$row][3] : '';
        $name = isset($sheet['cells'][$row][4]) ? $sheet['cells'][$row][4] : '';
        $pf_amount = isset($sheet['cells'][$row][5]) ? $sheet['cells'][$row][5] : '';
        $loan_amount = isset($sheet['cells'][$row][6]) ? $sheet['cells'][$row][6] : '';
        $date_format=date('d/m/Y');
        $status=0;
        $explode_date=explode("/",$loan_month) ;
        $month = $explode_date[1].'-'.$explode_date[2] ;
        $sql = mysql_query("INSERT INTO loan_history(pf_month,badge_number,first_name,pf_amount,loan_amount,reg_date,status)VALUES('$month','$badge_number','$name','$pf_amount','$loan_amount','$date_format','$status')");
        if($sql){
            echo "success" ;
        }else{
            echo mysql_error();
        }  
        $row++;
    }
}
$nr_sheets = count($excel->sheets);
for($i=0; $i<$nr_sheets; $i++) { 
    sheetData($excel->sheets[$i]);
}
?>

如果我错了,请纠正我,但我知道您的约束使它非常适合在表上创建多列主键

  • 在表上创建一个新约束:

    ALTER TABLE foo
    ADD CONSTRAINT pk_badge_month PRIMARY KEY (badge_number, month)
    
  • 现在您可以执行我们称之为upsert的操作,它的性能比读取并决定是否需要更新或插入要好得多

    INSERT INTO foo (badge_number,month,other_column) VALUES (1,'one','won'), (2,'two','too')
    

  • 如果有错误,请纠正我,但我理解,您的约束使得在表上创建多列主键非常完美

  • 在表上创建一个新约束:

    ALTER TABLE foo
    ADD CONSTRAINT pk_badge_month PRIMARY KEY (badge_number, month)
    
  • 现在您可以执行我们称之为upsert的操作,它的性能比读取并决定是否需要更新或插入要好得多

    INSERT INTO foo (badge_number,month,other_column) VALUES (1,'one','won'), (2,'two','too')
    

  • 因此,数据库中有一个表,其中“badge_number”和“month_year”是主要列?我的要求是相同的月份和相同的badge_number,然后只有我想停止,假设相同的badge_number,但月份不同,意味着我想插入值,如何执行此操作?因此数据库中有一个表,其中“badge_number”和“month_year”是主列吗?我的要求是相同的月份和相同的徽章号,然后我只想停止,假设相同的徽章号,但月份不同,意味着我想插入值,怎么做?我的要求是相同的月份和相同的徽章号,然后我只想停止,假设相同的徽章号码,但月份不同,意味着我想插入值如何执行此操作请参见编辑,基本上,如果您有de DB为您管理此项,您的生活将更轻松。如果你可以访问数据库并管理它,请更新我的答案,我找不到您,请您修改数据库表结构或约束条件好吗?我没有做任何更改,因为唯一的徽章号码可以在不同的月份插入多次。我的要求是相同的月份和徽章号码,然后我只想停止,假设相同的徽章号码,但月份不同,意味着我想插入值如何执行此操作请参见编辑,基本上,如果您有de DB为您管理此项,您的生活将更轻松。如果您可以访问数据库并管理它,请更新我的答案,我无法获取您的答案。您可以修改数据库表结构或约束条件吗?我没有更改任何内容,因为唯一的徽章编号可以在不同的月份插入多次