김 양의 멋따라 개발따기

[240110] Excel 파일 SQL 업로드 (PHP코드) 본문

TIL

[240110] Excel 파일 SQL 업로드 (PHP코드)

개발따라김양 2024. 1. 10. 17:33

 

파일을 선택하여 DB에 insert 시키는 코드입니다.

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<form enctype="multipart/form-data" action="" method="post">
파일 선택<br/>
  <input id="selectfile" type="file" name="upload"/><br/>
  <input type="submit"/>
</form>

<?php

  try {

    $pdo = new PDO("mysql:host=HOST;dbname=DBNAME", "ID", "PW");

  } catch (PDOException $e) {

    echo "Connection failed: " . $e->getMessage();

  }


  use Box\Spout\Reader\Common\Creator\ReaderEntityFactory;

  require_once("./vendor/autoload.php");

  if(isset($_FILES['upload'])){

    move_uploaded_file($_FILES['upload']['tmp_name'], $_SERVER['DOCUMENT_ROOT'].'/file/'.$_FILES['upload']['name']);

    $filename = $_SERVER['DOCUMENT_ROOT'].'/file/'.$_FILES['upload']['name'];

    $reader = ReaderEntityFactory::createReaderFromFile($filename);

    $reader->open($filename);

 

    foreach($reader->getSheetIterator() as $sheet){

      foreach($sheet->getRowIterator() as $row){

      $cells = $row->getCells();

      $myquery = 'insert into test set date="';

      $i=0;

      foreach ($cells as $value) {

        $valArray[$i++] = $value;

      }

      $myquery .= $valArray[0].'", name="'.$valArray[1].'", phone="'.$valArray[2].'", age='.$valArray[3];

      $pdo->exec($myquery);

    }

  }

  $reader->close();

}

?>

</body>

</html>