ขอถามหน่อยค่ะ ถ้า Import file excel To MySQL (PHP Excel (PHP Class)) แล้วทำการ Import ไฟล์ไปอีกครั้ง จะให้เช็คว่า ถ้าข้อมูลซ้ำให้ UPDATE แต่ถ้าไม่ซ้ำให้ INSERT ค่ะ
ขอถามหน่อยค่ะ ถ้า Import file excel To MySQL (PHP Excel (PHP Class)) แล้วทำการ Import ไฟล์ไปอีกครั้ง จะให้เช็คว่า ถ้าข้อมูลซ้ำให้ UPDATE แต่ถ้าไม่ซ้ำให้ INSERT ค่ะ
ให้เช็คที่ฟิลด์ EMNO เป็นหลักค่ะ
Code (PHP)
<!-- -Attach File Excel-->
<?php
/** PHPExcel */
require_once 'include/PHPExcel/Classes/PHPExcel.php';
/** PHPExcel_IOFactory - Reader */
include 'include/PHPExcel/Classes/PHPExcel/IOFactory.php';
$filepath = "file_excel.xlsx;
$inputFileName = $filepath;
$inputFileType = PHPExcel_IOFactory::identify($inputFileName);
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objReader->setReadDataOnly(true);
$objPHPExcel = $objReader->load($inputFileName);
$objWorksheet = $objPHPExcel->setActiveSheetIndex(0);
$highestRow = $objWorksheet->getHighestRow();
$highestColumn = $objWorksheet->getHighestColumn();
$headingsArray = $objWorksheet->rangeToArray('A1:'.$highestColumn.'1',null, true, true, true);
$headingsArray = $headingsArray[1];
$r = -1;
$namedDataArray = array();
for ($row = 2; $row <= $highestRow; ++$row) {
$dataRow = $objWorksheet->rangeToArray('A'.$row.':'.$highestColumn.$row,null, true, true, true);
if ((isset($dataRow[$row]['A'])) && ($dataRow[$row]['A'] > '')) {
++$r;
foreach($headingsArray as $columnKey => $columnHeading) {
$namedDataArray[$r][$columnHeading] = $dataRow[$row][$columnKey];
}
}
}
$i = 0;
foreach ($namedDataArray as $result) {
$i++;
$strSQL = "";
$strSQL .= "INSERT INTO employee_tb";
$strSQL .= "(EMNO, TITLE_TH, NAME_TH, SURNAME_TH, TITLE_EN, NAME_EN, SURNAME_EN, POSITION, DEPT, TEL, PIC) ";
$strSQL .= "VALUES ";
$strSQL .= "('".$result["EMNO"]."','".$result["TITLE_TH"]."','".$result["NAME_TH"]."','".$result["SURNAME_TH"]."' ";
$strSQL .= ",'".$result["TITLE_EN"]."','".$result["NAME_EN"]."','".$result["SURNAME_EN"]."','".$result["POSITION"]."' ";
$strSQL .= ",'".$result["DEPT"]."','".$result["TEL"]."' ";
$strSQL .= ",'-') ";
mysql_query($strSQL) or die(mysql_error());
}
mysql_close($objConnect);
exit("<script>alert('Import Complete');window.location='insert.php';</script>");
?>
Tag : PHP, MySQL, CakePHP
ประวัติการแก้ไข 2015-03-16 13:17:18
Date :
2015-03-16 13:15:21
By :
loomoo
View :
1892
Reply :
4
สามารถใช้คำสั่ง REPLACE ได้เลยครับ
Code (SQL)
replace into tb_name (field) values ('val1')
Date :
2015-03-16 13:44:37
By :
Manussawin
Code
<!-- -Attach File Excel-->
<?php
/** PHPExcel */
require_once 'include/PHPExcel/Classes/PHPExcel.php';
/** PHPExcel_IOFactory - Reader */
include 'include/PHPExcel/Classes/PHPExcel/IOFactory.php';
$filepath = "file_excel.xlsx;
$inputFileName = $filepath;
$inputFileType = PHPExcel_IOFactory::identify($inputFileName);
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objReader->setReadDataOnly(true);
$objPHPExcel = $objReader->load($inputFileName);
$objWorksheet = $objPHPExcel->setActiveSheetIndex(0);
$highestRow = $objWorksheet->getHighestRow();
$highestColumn = $objWorksheet->getHighestColumn();
$headingsArray = $objWorksheet->rangeToArray('A1:'.$highestColumn.'1',null, true, true, true);
$headingsArray = $headingsArray[1];
$r = -1;
$namedDataArray = array();
for ($row = 2; $row <= $highestRow; ++$row) {
$dataRow = $objWorksheet->rangeToArray('A'.$row.':'.$highestColumn.$row,null, true, true, true);
if ((isset($dataRow[$row]['A'])) && ($dataRow[$row]['A'] > '')) {
++$r;
foreach($headingsArray as $columnKey => $columnHeading) {
$namedDataArray[$r][$columnHeading] = $dataRow[$row][$columnKey];
}
}
}
$i = 0;
foreach ($namedDataArray as $result) {
$i++;
$chkDdata = mysql_query("SELECT EMNO FROM employee_tb WHERE EMNO = '".$result["EMNO"]."' ");
if(mysql_num_rows($chkDdata)<=0){ #ถ้าเช็คข้อมูลใน DB แล้วไม่มีข้อมูลเก่าอยู่ก็ให้ทำการบันทึก
$strSQL = "";
$strSQL .= "INSERT INTO employee_tb";
$strSQL .= "(EMNO, TITLE_TH, NAME_TH, SURNAME_TH, TITLE_EN, NAME_EN, SURNAME_EN, POSITION, DEPT, TEL, PIC) ";
$strSQL .= "VALUES ";
$strSQL .= "('".$result["EMNO"]."','".$result["TITLE_TH"]."','".$result["NAME_TH"]."','".$result["SURNAME_TH"]."' ";
$strSQL .= ",'".$result["TITLE_EN"]."','".$result["NAME_EN"]."','".$result["SURNAME_EN"]."','".$result["POSITION"]."' ";
$strSQL .= ",'".$result["DEPT"]."','".$result["TEL"]."' ";
$strSQL .= ",'-') ";
mysql_query($strSQL) or die(mysql_error());
} else {
#ถ้ามีข้อมูลนี้อยู่แล้วก็ให้ทำการอัพเดท เขียนเอาเองนะครับ
}
}
mysql_close($objConnect);
exit("<script>alert('Import Complete');window.location='insert.php';</script>");
?>
Date :
2015-03-16 13:48:48
By :
arm8957
ขอบคุณมากค่ะ คุณ คนธรรมดา ไม่พิเศษ
ช่วยแนะนำต่ออีกสักนิดได้ไหมค่ะ พยายามลองทำเองแล้วติด Error ค่ะ
Error
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE EMNO = '11020769'' at line 10
Code (PHP)
<?
$i = 0;
foreach ($namedDataArray as $result) {
$i++;
$chkDdata = mysql_query("SELECT EMNO FROM employee_tb WHERE EMNO = '".$result["EMNO"]."' ");
if(mysql_num_rows($chkDdata)<=0){ #ถ้าเช็คข้อมูลใน DB แล้วไม่มีข้อมูลเก่าอยู่ก็ให้ทำการบันทึก
$strSQL = "";
$strSQL .= "INSERT INTO employee_tb";
$strSQL .= "(EMNO, TITLE_TH, NAME_TH, SURNAME_TH, TITLE_EN, NAME_EN, SURNAME_EN, POSITION, DEPT, TEL, PIC) "; //ชื่อ Column ของ DB MySQL
$strSQL .= "VALUES ";
$strSQL .= "('".$result["EMNO"]."','".$result["TITLE_TH"]."','".$result["NAME_TH"]."','".$result["SURNAME_TH"]."' "; //ชื่อ Column ของ File Excel (.xls , xlsx)
$strSQL .= ",'".$result["TITLE_EN"]."','".$result["NAME_EN"]."','".$result["SURNAME_EN"]."','".$result["POSITION"]."' ";
$strSQL .= ",'".$result["DEPT"]."','".$result["TEL"]."' ";
$strSQL .= ",'-') ";
} else {
$sql = "select * from employee_tb where EMNO = '".$result["EMNO"]."' ";
$result = mysql_query($sql) or exit($sql);
$row = mysql_fetch_array($result);
$strSQL = "UPDATE employee_tb SET
TITLE_TH = '".$result["TITLE_TH"]."',
NAME_TH = '".$result["NAME_TH"]."',
SURNAME_TH = '".$result["SURNAME_TH"]."',
TITLE_EN = '".$result["TITLE_EN"]."',
NAME_EN = '".$result["NAME_EN"]."',
SURNAME_EN = '".$result["SURNAME_EN"]."',
POSITION = '".$result["POSITION"]."',
DEPT = '".$result["DEPT"]."',
WHERE EMNO = '".$row["EMNO"]."' ";
}
mysql_query($strSQL) or die(mysql_error());
}
mysql_close($objConnect);
exit("<script>alert('Import Complete');window.location='frm_insert.php';</script>");
?>
Date :
2015-03-16 14:52:22
By :
loomoo
Load balance : Server 03