그누보드·PHP에서 데이터베이스 테이블 필드 존재 여부 확인 및 동적 추가 방법
페이지 정보

본문
그누보드와 PHP 환경에서 데이터베이스 테이블에 특정 필드가 있는지 확인하고, 없을 경우 동적으로 추가하는 코드를 작성하여 플러그인이나 커스텀 기능 오류를 해결하는 방법을 알아봅니다.
그누보드/PHP에서 데이터베이스 테이블 필드 존재 여부 확인 및 동적 추가 방법
그누보드와 PHP 환경에서 데이터베이스 테이블에 특정 필드가 존재하는지 확인하고, 필드가 없을 때 동적으로 추가하는 코드를 작성하려면 SHOW COLUMNS 쿼리와 sql_query 함수를 조합하여 사용할 수 있습니다.
1. 필드 존재 여부 확인 및 추가 PHP 코드 예시
아래 코드는 SHOW COLUMNS를 통해 특정 테이블({$write_table} 등)에 원하는 필드가 있는지 검사하고, 결과가 없을 경우 ALTER TABLE 쿼리를 실행해 필드를 동적으로 생성하는 패턴입니다.
<?php
$field_query = "SHOW COLUMNS FROM {$write_table} WHERE `Field` = '필드명';";
$field_row = sql_fetch($field_query);
if(!$field_row['Field']) {
sql_query(" ALTER TABLE `테이블명` ADD `필드명` varchar(20) NOT NULL DEFAULT '' ", true);
}
?>
또한 회원정보({$g5['member_table']}) 등의 테이블에서 컬럼 유무를 확인하고 동적으로 추가하는 방식도 활용할 수 있습니다.
<?php
$sql = "SHOW COLUMNS FROM `{$g5['member_table']}` LIKE '{$columnName}'";
$res = sql_fetch($sql);
if (!$res) {
$sql = "ALTER TABLE `{$g5['member_table']}` ADD COLUMN `{$columnName}` VARCHAR(255) NOT NULL DEFAULT ''";
sql_query($sql, false);
}
?>
2. 실행 전 주의사항 및 확인 방법
- 백업 필수: 데이터베이스 구조를 변경하는 작업이므로 실행 전 반드시 데이터베이스를 백업하십시오.
- 실행 후 확인: 코드를 실행한 후 phpMyAdmin 등 데이터베이스 관리 툴에서 대상 테이블에 해당 필드가 정상적으로 생성되었는지 직접 확인합니다.
그누보드에서 기본 제공되는 여분 필드(게시판 wr_1~wr_10, 회원 mb_1~mb_10 등)를 확장하려면, 데이터베이스 테이블에 직접 필드를 추가하고 관련 PHP 파일을 수정해야 합니다.
1. 데이터베이스 필드 추가
데이터베이스 테이블에 새로운 필드(예: wr_11)가 존재하지 않는다면, ALTER TABLE 쿼리를 실행하여 필드를 추가해야 합니다. phpMyAdmin과 같은 DB 관리 도구를 사용하거나, PHP 코드 내에서 sql_query 함수를 통해 실행할 수 있습니다.
- SQL 예시:
ALTER TABLE 테이블명 ADDwr11VARCHAR(255) NOT NULL DEFAULT '' AFTERwr10``
2. 관련 파일 수정
데이터베이스에 필드를 추가한 후, 그누보드에서 해당 필드를 인식하고 데이터를 처리할 수 있도록 관련 파일을 수정해야 합니다.
- 게시판 여분 필드 확장 시: 게시판의
write.skin.php파일에 입력 폼(<input>)을 추가하고,view.skin.php파일에 출력 코드를 추가합니다. - 회원 정보 여분 필드 확장 시:
/adm/member_form.php등 회원 정보 수정 페이지에서 해당 필드를 처리하도록 코드를 수정해야 합니다.
주의사항:
- 데이터베이스 구조를 직접 변경하는 작업이므로, 작업 전 반드시 데이터베이스를 백업하십시오.
- 코어 파일을 직접 수정할 경우, 추후 그누보드 업데이트 시 수정 사항이 덮어씌워질 수 있으므로 주의가 필요합니다.
ALTER TABLE 실행 실패 시 대처 방안
ALTER TABLE 쿼리 실행 중 권한 부족이나 구문 오류로 인해 실패할 경우, 다음과 같은 절차를 통해 원인을 파악하고 대응할 수 있습니다.
1. 권한 확인 및 조치
- DB 권한 점검: 데이터베이스 계정에
ALTER권한이 부여되어 있는지 확인해야 합니다. 권한이 부족할 경우, 데이터베이스 관리자 계정(root 등)을 통해 해당 계정에 적절한 권한을 부여해야 합니다. - 구문 오류 확인: 쿼리 문법이 사용 중인 데이터베이스 환경(MySQL/MariaDB)에 맞는지 확인하십시오. 특히 테이블명이나 필드명에 백틱(
`)을 올바르게 사용했는지 점검이 필요합니다.
2. 수동 처리 및 롤백
- 수동 추가: 코드 실행이 계속 실패한다면,
phpMyAdmin과 같은 데이터베이스 관리 도구에 직접 접속하여 해당 테이블에 필드를 수동으로 추가하는 것이 가장 확실합니다. - 잘못된 필드 삭제(롤백): 만약 잘못된 설정으로 필드가 추가되었거나, 테스트 후 원상복구가 필요한 경우 아래 쿼리를 사용하여 해당 필드를 삭제할 수 있습니다.
ALTER TABLE 테이블명 DROP COLUMN 필드명;
3. 참고 사항
- 필드 추가 작업 전에는 반드시 데이터베이스를 백업하여 데이터 손실에 대비하시기 바랍니다.
- 필드 추가가 번거롭다면
phpMyAdmin등 관리 툴을 활용하는 것이 오류를 줄이는 방법입니다.
그누보드 DB 필드 동적 추가 가이드
- 내 상황: 테이블에 커스텀 필드가 없어서 오류가 발생하는 경우
- 선택 기준:
SHOW COLUMNS쿼리로 필드 존재 여부를 먼저 확인 - 다음 행동: 필드가 없을 경우
sql_query를 통해ALTER TABLE... ADD쿼리 실행
실전 FAQ
Q. ALTER TABLE 실행 시 권한 오류가 발생하면 어떻게 해결하나요?
- 예외/막히는 지점: DB 계정의 권한이 부족하여
ALTER TABLE이 실패할 수 있습니다. - 대안: 데이터베이스 관리자 계정을 통해
ALTER권한을 부여하거나,phpMyAdmin등 관리 툴을 이용해 수동으로 필드를 추가해야 합니다. - 롤백: 잘못 추가된 필드는
ALTER TABLE 테이블명 DROP COLUMN 필드명;쿼리로 삭제할 수 있습니다.
함께 보면 좋은 글
참고자료
기타 참고자료
- sir.kr — 관리자 기본 환경설정 여분 필드 추가하기... - SIR - 개발자 커뮤니티
- sir.kr — 여분필드 추가 생성 방법 - SIR - 개발자 커뮤니티
- sir.kr — 그누보드 여분필드 추가방법문의 - SIR - 개발자 커뮤니티
- wizardofcode.kr — 그누보드5 회원정보 여분 필드 추가 하는 방법 - WizardOfCode
- rebuilder.co.kr — 관리자 기본 환경설정 여분 필드 추가하기 > 팁과노하우 | 그누보드 리빌더
- wakestand.tistory.com — MySQL 테이블에 ALTER로 컬럼 추가방법
- 이전글아파치 웹서버에서 .php 확장자 숨기기 및 깔끔한 URL 설정 방법 26.10.12
- 다음글그누보드 팝업레이어 출력 범위 수정 방법 26.10.12
댓글목록
등록된 댓글이 없습니다.