filereader — как проверить состояние файла xls в Stack Overflow

Здесь я использую XLS File Reader в PHP, он работает нормально, я сделал одну логику, XLS файл, я получаю номер значка (4565) и месяц (01-2017), теперь я хочу проверить, если номер значка и месяц уже данные существуют или нет, предположим, что данные являются exixts означает, что я не должен позволять вставлять новую запись, предположим, что not exits означает, что я хочу разрешить вставку новой записи, как это можно сделать, я путаюсь из-за листа 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]);
}
?>

1

Решение

Поправьте меня, если не прав, но я понимаю, что имеющееся у вас ограничение делает идеальным сделать первичный ключ из нескольких столбцов таблицы.

  1. Вы делаете новое ограничение на таблицу:

    ALTER TABLE foo
    ADD CONSTRAINT pk_badge_month PRIMARY KEY (badge_number, month)
    
  2. Теперь вы можете делать то, что мы называем upsert, гораздо эффективнее, чем читать и решать, нужно ли нам обновлять или вставлять.

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]