이미지파일 덮어씌우기
본문
이미지 저장 테이블이 2개있습니다 필드와 구조 모두 같습니다.
수정시 board_file_temp에 저장되고 수정이 확인되면 board_file에 덮어씌워집니다(최대 4개파일)
단 wr_id(게시물번호),bo_table(게시판유형),bf_no(파일번호)를 확인 후 값이 있으면 업데이트를 하고
없으면 insert 시키는 형식입니다 밑과같이하면 insert는 되는데 값들이 안넘어오는 상황입니다. 또어지저찌해도 파일이 3개면 1개만 insert가 됩니다.
insert 파라미터를 지금 밑에는 '{$bk['bf_source']}', 이렇게 하고있는데 '{$bk[$i]['bf_source']}' 이렇게해도 마찬가지입니다. 너무 오래걸려서 조언을 좀 구하고싶습니다...
$sql3 = "SELECT * FROM g5_board_file_temp WHERE wr_id = '$wr_id' AND bo_table = '$bo_table'";
$bk_result = sql_fetch($sql3);
for ($i = 0; $i < $total_cnt2; $i++) {
$bk = sql_fetch_array($bk_result);
if (empty($bk)) {
$trans_bf = "INSERT INTO g5_board_file
SET bo_table = '{$bo_table}',
wr_id = '{$wr_id}',
bf_no = $i,
bf_source = '{$bk['bf_source']}',
bf_file = '{$bk['bf_file']}',
bf_content = '{$bk['bf_content']}',
bf_fileurl = '{$bk['bf_fileurl']}',
bf_thumburl = '{$bk['bf_thumburl']}',
bf_storage = '{$bk['bf_storage']}',
bf_download = 0,
bf_filesize = '{$bk['bf_filesize']}',
bf_width = '{$bk['bf_width']}',
bf_height = '{$bk['bf_height']}',
bf_type = '{$bk['bf_type']}',
bf_datetime = '{$bk['bf_datetime']}'";
sql_query($trans_bf);
} else {
$trans_bf = "UPDATE g5_board_file
SET bf_source = '{$bk['bf_source']}',
bf_file = '{$bk['bf_file']}',
bf_content = '{$bk['bf_content']}',
bf_fileurl = '{$bk['bf_fileurl']}',
bf_thumburl = '{$bk['bf_thumburl']}',
bf_storage = '{$bk['bf_storage']}',
bf_filesize = '{$bk['bf_filesize']}',
bf_width = '{$bk['bf_width']}',
bf_height = '{$bk['bf_height']}',
bf_type = '{$bk['bf_type']}',
bf_datetime = '{$bk['bf_datetime']}'
WHERE bo_table = '{$bo_table}'
AND wr_id = '{$wr_id}'
AND bf_no = '{$i}'";
sql_query($trans_bf);
}
}
답변 3
첨부가 모두 안나오는 것은 아래처럼 하면 됩니다
$sql3 = "SELECT * FROM g5_board_file_temp WHERE wr_id = '$wr_id' AND bo_table = '$bo_table' order by bf_no";
$bk_result = sql_query($sql3);
그 다음 코드가 또 이상 합니다
$bk = sql_fetch_array($bk_result);
if (empty($bk)) {
$trans_bf = "INSERT INTO g5_board_file
SET bo_table = '{$bo_table}',
wr_id = '{$wr_id}',
bf_no = $i,
bf_source = '{$bk['bf_source']}', <--- empty($bk)인데 $bk['bf_source'] 값이 있을 까닭이 없죠
bf_file = '{$bk['bf_file']}',<--- 여기도 마찬가지이고 이하 모든 변수가 마찬가지로 값이 없는 것이 정상
=================
그리고 무엇을 하려는지 이해하기 어렵습니다
$total_cnt2 = 3이라고 한다면, 그리고 1,2번이 첨부가 있다고 한다면
for문에서 3번째에는 값이 없겠죠 그러면 insert를 하겠다는 생각인데 어떤 값을 insert한다는 것인가요?
무언가를 insert를 했다고 쳐도 다음 수정때에는 3번째 값이 여전히 없으니
또 무언가를 insert를 한다는 것이 말이 안됩니다
위에서 bf_no = $i ==> bf_no = 2 로 insert 되었는데 다음 수정시 3번째 값이 없으니 또 bf_no = 2가 되게 insert 한다
이런 코드라서 완전히 엉터리 코드 입니다
다음 디버깅 코드가 도움이 될지 모르겠습니다.
...
$bk_result = sql_query($sql3);
for ($i = 0; $i < $total_cnt2; $i++) {
$bk = sql_fetch_array($bk_result);
print("<pre> {$i}. ");
print_r($bk);
print('</pre>');
if (empty($bk)) {
...
말씀하신대로 찍어보니 아무값도 나오지 않았습니다..
$sql3 = "SELECT * FROM g5_board_file_modify WHERE wr_id = '$wr_id' AND bo_table = '$bo_table'";
$bk_result = sql_fetch($sql3);
print_r($bk_result); 이렇게 찍어보니 한개의 row만 찍히는데 for문을 돌면서 insert든 update 든 되게 하려면 어떻게해야할까요