2017-02-03 11 views
1

ここで私はPHPでxlsファイルリーダーを使用しています。これはうまくいきます、私は1つのロジックを作成しました。xlsファイル私はバッジ番号(4565)と月(01-2017) )今私は、バッジ番号と月が既に存在するかどうかをチェックしたいと思います。データがexixtsであると仮定します。私は新しいレコードを挿入するべきではないはずです。私はxlsシートのために混乱しています。間違った場合PHPで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]); 
} 
?> 
+0

だから、 "badge_number" と "MONTH_YEARは" 主カラムですDB内のテーブルはありますか? – Borjante

+0

私の要件は同じ月と同じbadge_numberですが、私は同じbadge_numberを仮定していますが、同じbadge_numberを仮定しますが、月が違うことを意味します。値を挿入する方法を教えてください。 –

答えて

0

は私を修正して、私はあなたが持っている制約は、テーブル上に複数列の主キーを作成することが完璧になりますことを理解しています。

  1. あなたはテーブルの上に新しい制約を作る:あなたは私たちがアップサート呼んで何ができる我々は更新または挿入する必要がある場合

    ALTER TABLE foo 
    ADD CONSTRAINT pk_badge_month PRIMARY KEY (badge_number, month) 
    
  2. は今、それは読んで決めるよりもはるかに良いパフォーマンスです。

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

私の要件は同じ月で同じbadge_numberで、同じbadge_numberだと思いますが、月が違うと思います。値を挿入する方法を教えてください。 –

+0

編集を参照してください。基本的にDB管理があれば、あなたの人生は楽になります。それはあなたがDBにアクセスしてそれを管理することができる場合です – Borjante

+0

私の答えを更新してください、私はあなたを得ることができません –

関連する問題