늘하던 대로 했는데 안됩니다 ㅠㅠ
본문
Warning: Undefined array key "wr_14" in /volume1/web/skin/board/dA/write.skin.php on line 309 Call Stack: 0.0002 375680 1. {main}() /volume1/web/bbs/write.php:0 0.3173 650696 2. include_once('/volume1/web/skin/board/dA/write.skin.php') /volume1/web/bbs/write.php:441
제가 여분필드 추가가 필요해서 여분필드를 추가 했는데 write_update.skin.php이 파일에 여분필드를 원하는 만큼 추가 하고 // 게시글 여분필드 추가 정보 업데이트
$sql = " update $write_table
set wr_11 = '$wr_11',
wr_12 = '$wr_12',
wr_13 = '$wr_13',
wr_14 = '$wr_14',
wr_15 = '$wr_15'
where wr_id = '$wr_id' ";
sql_query($sql);
제 디비에도
이렇게 추가도 하고
다른 서버들은 이렇게 하면 다 되었습니다 근데 제가 최근들어 시놀로지 나스 구입을 해서 나스에 그누보를 설치해서 사용하고 있어요. 제가 특정한 게시판에 여분필드가 필요해서 이렇게 하려고 했는데 에러가
Warning: Undefined array key "wr_14" in /volume1/web/skin/board/dA/write.skin.php on line 309 Call Stack: 0.0002 375680 1. {main}() /volume1/web/bbs/write.php:0 0.3173 650696 2. include_once('/volume1/web/skin/board/dA/write.skin.php') /volume1/web/bbs/write.php:441
이렇게 납니다. ㅠㅠ wr_14에 택스트필드가 필요해서 만들었는데 없다고 합니다. 이걸 참고해서 https://gnustudy.com/bbs/board.php?bo_table=skin_board&wr_id=14&sfl=wr_subject%7C%7Cwr_content&stx=%EC%97%AC%EB%B6%84%ED%95%84%EB%93%9C&sop=and 시놀로지 나스에서 하고 나서 부터 이래요 ㅠㅠ 솔직히 그누보드를 설치할 때 부터가 까다로워 설치를 간신히 했거든요 ㅠㅠ 고수님들 시놀로지나스를 야시면 가르쳐주세요. 부탁드립니다.
답변 2
우선은, wr_14 필드가 HTML 폼에서 정상적으로 전달되는지 확인하시기 바랍니다.
*write.skin.php에서 wr_14 입력 필드가 존재하는지 확인.
<input type="text" name="wr_14" value="<?= isset($write['wr_14']) ? $write['wr_14'] : '' ?>">
*값이 실제로 전송되고 있는지 확인하기 위해 $_POST 출력
write_update.skin.php 파일에 아래 코드를 추가하세요.
echo "<pre>";
print_r($_POST);
echo "</pre>";
exit;
PHP:8.*에서는 $_POST['wr_14']가 정의되지 않았을 경우 Undefined array key 경고가 발생.
따라서, 아래와 같이 isset() 또는 ?? (널 병합 연산자)를 사용하여 변수를 초기화하세요.
$wr_14 = isset($_POST['wr_14']) ? trim($_POST['wr_14']) : '';
- PHP 7.4 이상이라면 다음과 같이 간결하게 처리할 수 있음.
$wr_14 = $_POST['wr_14'] ?? '';
wr_14 컬럼이 TEXT 타입이므로 NULL이 허용되지 않는 경우
update 시 문제가 발생할 수도 있습니다.
다음과 같이 NULL을 처리하도록 write_update.skin.php에 추가/수정할 수 있습니다.
$sql = "UPDATE $write_table SET
wr_11 = '$wr_11',
wr_12 = '$wr_12',
wr_13 = '$wr_13',
wr_14 = " . (empty($wr_14) ? "NULL" : "'$wr_14'") . ",
wr_15 = '$wr_15'
WHERE wr_id = '$wr_id' ";
sql_query($sql);
프로젝트의 "DocumentRoot/data/cache/*, 캐시 지우는 거 잊지마세요.
※ P.S. ※
PHP:7에서는 $_POST['wr_14']가 존재하지 않으면 null이 반환되지만,
PHP:8 이상에서는 Undefined array key 경고가 발생합니다.
>>> 시놀로지 NAS는 최근 버전에서 PHP:8.0을 기본 설정으로 제공합니다.
시놀로지 NAS의 Web Station 환경이
일반적인 리눅스 서버와 PHP, Nginx, MariaDB 설정이 다르게 적용되기 때문에
wr_14가 정상적으로 인식되지 않는 문제가 발생할 수 있습니다.
*아래 코드를 게시글을 작성하거나 수정할 때 실행되는 파일에 추가.
$wr_14 = $_POST['wr_14'] ?? '';
*php.ini 설정 변경 (variables_order = "EGPCS")
*Nginx 설정, server 블럭 변경 (client_max_body_size 10M)
*MariaDB STRICT_TRANS_TABLES 모드 해제 (sql_mode = "NO_ENGINE_SUBSTITUTION")