엑셀 업로드시 db에 입력이 안됩니다.
본문
안녕하세요, 문의 드립니다.
제가 아래의 링크에서 스킨을 받아서 잘 사용해 왔는데 금일 데이터를 엑셀로 업로드 시키는데
몇개의 데이타를 추가하였습니다. 까지는 출력이 되는데 웹상에서는 변화가 없어 db table을
확인해보니 데이터가 입력이 아예 되어 있질 않습니다.
혹시 무슨 이유가 있을까요? db의 권한이라든지 ~~~
http://sir.kr/bbs/board.php?bo_table=g4_tiptech&wr_id=30646&page=2
원본 소스 입니다.
답변 5
테이블과 디비사아의 값 체크 다시 하시는게 좋을듯 하옵니다.
비슷한 경험을 했는데
저는 하나씩 늘려가면서 체크 했습니다.
무식한게 제일 좋은 방법인듯 ㅎㅎㅎ
g4 입니다.
지금까지 잘 사용해 오고 있었습니다.
입력시 한번 DB쿼리를 찍어봐서 들어가지 않는 원인을 찾아보셔야 할듯 합니다.
혹시 '표시나 쿼리 등록시 타입에 따른 문제가 있을수도 있습니다.
마지막까지는 정상적으로 실행이 되고 테이블에 입력이 안되는데 도무지 원인을 모르겠습니다.
<?php
ini_set('memory_limit', -1);
include_once '_common.php';
require_once 'Excel/reader.php';
$data = new Spreadsheet_Excel_Reader();
$data->setOutputEncoding('euc-kr'); // 엑셀 파일의 인코딩 설정.
// 읽어올 엑셀 파일
$data->read('test.xls');
error_reporting(E_ALL ^ E_NOTICE);
$bo_name="result";
$tablename = "g4_write_$bo_name"; // 테이블 명
?>
<html>
<meta http-equiv="content-type" content="text/html; charset=euc-kr">
<head>
</head>
<body>
<?php
function change_date($arr_date){
$tmp_arr=explode('/', $arr_date);
$arr_date = $tmp_y."-".$tmp_arr[0]."-".$tmp_arr[1].$tmp_s;
$tmp_yns = explode(' ', $tmp_arr[2]);
$arr_date=$tmp_yns[0].$arr_date." ".$tmp_yns[1];
return $arr_date;
}
$arr = array();
$sqls = array();
$numRows= $data->sheets[0]['numRows'];
$numCols= $data->sheets[0]['numCols'];
//먼저 엑셀에 있는 데이터를 배열에 저장합니다.
for ($i = 1; $i <= $numRows; $i++) {
for ($j = 1; $j <= $numCols; $j++) {
$arr[$i][$j] = $data->sheets[0]['cells'][$i][$j];
}
}
//저장된 배열로 sql문을 만듭니다.
for ($j = 1; $j <= $numCols; $j++) {
$sqls1 .= "{$arr[1][$j]}, ";
}
$sqls1 = substr($sqls1, 0, -2);
for ($i = 1; $i <= $numRows; $i++) {
for ($j = 1; $j <= $numCols; $j++) {
$sqls[$i] .= "'{$arr[$i][$j]}', ";
}
$sqls[$i] = substr($sqls[$i], 0, -2);
$sqls[$i] = "INSERT INTO $tablename (".$sqls1.") VALUES (".$sqls[$i].")";
}
// print_r2($sqls1); //sql문이 잘 완성 됐나 확인 차, 출력.
$cnt = count($sqls);
for ($i=2; $i <= $cnt ; $i++) {
// print_r2($sqls[$i]); //sql문이 잘 완성 됐나 확인 차, 출력.
echo "<br>";
mysql_query($sqls[$i]);
}
// bo_count_write를 현재 위치를 저장 wr_num에 실제로는 마이너스 넘버가 저장되어 있음.
$cnt1=$cnt-1;
$sql="UPDATE g4_board SET bo_count_write='$cnt1' WHERE bo_table='$bo_name'";
// print_r2($sql); //sql문이 잘 완성 됐나 확인 차, 출력.
// echo "<br>";
mysql_query($sql);
echo "<br> $cnt 의 데이터를 추가하였습니다."
?>
</body>
</html>
그런데 게시판에서 하나씩 등록을 할때는 잘 되거든요