늘하던 대로 했는데 안됩니다 ㅠㅠ

늘하던 대로 했는데 안됩니다 ㅠㅠ

QA

늘하던 대로 했는데 안됩니다 ㅠㅠ

답변 2

본문

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);

 

제 디비에도 

3067840266_1740593041.4738.png

이렇게 추가도 하고 

다른 서버들은 이렇게 하면 다 되었습니다 근데 제가 최근들어 시놀로지 나스 구입을 해서 나스에 그누보를 설치해서 사용하고 있어요. 제가 특정한 게시판에 여분필드가 필요해서 이렇게 하려고 했는데 에러가 

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")

버전이 높아지면서 기본값을 지정해줘야 하는데 아마 기본값이 없어서 그런거 같습니다. wr_14의 기본값을 glitter0gim님의 답변을 참고해서 선언해주시면 될 거 같습니다. 

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 155
© SIRSOFT
현재 페이지 제일 처음으로