sql insert 반복문 질문입니다.
본문
사진을 폴더별로 모아놓고 각 폴더별로 들어가서
파일들을 불러와 DB에 저장시키려고 합니다.
근데 첫 폴더만 반복문이 돌고
나머지 폴더들은 반복문이 돌지 않습니다.
혹시 해결 가능하실까요...?
코드는 여기있습니다.
$sql = "SELECT gr_id, bo_table FROM g5_board WHERE gr_id = 'gallery' order by bo_order";
$result = sql_query($sql);
for($i=0; $row=sql_fetch_array($result); $i++) {
// echo $row['bo_table']."<br>";
if($row['bo_table'] != "filetable") {
$dir = G5_DATA_PATH.'/file/'.$row['bo_table']."/";
}
// 디렉토리 패스 체크
if (!is_dir($dir)) {
echo '"' . $dir . '" is not directory. Check the directory path.';
}
// 디렉토리 열기
$dir_obj = opendir($dir);
// 디렉토리내에 파일명을 배열에 저장
$files = array();
while (($file = readdir($dir_obj)) != false) {
// 리눅스에서만 보이는 .와 ..와 디렉토리를 제거한 나머지를 배열에 저장합니다.
if ($file != '.' && $file != '..' && !is_dir($dir . $file) && $file != "eli")
array_push($files, $file);
}
foreach ($files as $file) {
$path = $dir . $file;
if (preg_match("/\.(jp[e]?g|gif|png)$/i", $path)) {
$width = 1920;
$height = (int)($size[1] * $rate);
$size = getimagesize($path);
$sql_wr_id = "SELECT wr_id FROM g5_board_file WHERE bo_table = '".$row['bo_table']."' order by wr_id desc limit 1";
$result_wr_id = sql_fetch($sql_wr_id);
if(!$result_wr_id) {
$result_wr_id['wr_id'] = 0;
} else {
$result_wr_id['wr_id'] = (int)$result_wr_id['wr_id'] + 1;
}
$sql = "INSERT INTO g5_board_file SET
bo_table = '".$row['bo_table']."',
wr_id = ". $result_wr_id['wr_id'] .",
bf_no = 0,
bf_source = '{$file}',
bf_file = '{$file}',
bf_download = 0,
bf_content = '',
bf_filesize = ".filesize($path).",
bf_width = {$size[0]},
bf_height = {$size[1]},
bf_type = {$size[2]},
bf_datetime = '".G5_TIME_YMDHIS."'"
;
// echo $sql."<br>";
$result = sql_query($sql);
}
}
}
답변 2
마지막에 $result = sql_query($sql); 이걸 재정의 하셨네요
이걸 다른 변수로 바꾸시면 될겁니다.
$result_insert = sql_query($sql); 로 하시거나
sql_query($sql); 아예 에러를 안보시겠다면 이렇게 하는것도 방법이겠네요
무의식적으로 그냥 $sql $result 라고만 쓰는 버릇이 생겼습니다ㅠㅠㅠ
이 버릇은 고쳐야 겠어요!
정말 감사합니다! 백수1995님의 답변으로 해결했습니다!!!! 진심으로 감사합니다!!!!! 사랑합니다!!!