테스트 사이트 - 개발 중인 베타 버전입니다

다중테이블에 db값 insert 채택완료

Willfor716 2년 전 조회 2,017

안녕하세요.

 

회원가입페이지에서 추가적으로 정보를 입력할때

새로운테이블 g5_member_addinfo 라는 테이블을 만들었습니다.

그래서, 회원가입페이지에서 추가 회원정보 입력 칸을 만들어서

g5_member 테이블 외에 g5_member_addinfo 테이블에도 동시에 db 값을 insert 할려고 합니다.

 

그래서

 

register_form.skin.php 파일에는

 

<form id="fregisterform" name="fregisterform" action="<?php echo $register_action_url ?>" onsubmit="return fregisterform_submit(this);" method="post" enctype="multipart/form-data" autocomplete="off">

 

 

 

중간에

<table class="peinfo01">

<thead>

  <tr>

    <th class="peinfo01-a01">

    어떤 종류의 기기를 사용하고 계십니까?

    </th>

  </tr>

</thead>

<tbody>

  <tr>

    <td class="peinfo01-a01">

        <input type="radio" name="mb_product_info" value="productA"<?php echo ($member['mb_productA'] == "productA") ? " checked" : "";?>> productA

        <input type="radio" name="mb_product_info" value="productB"<?php echo ($member['mb_productA'] == "productB") ? " checked" : "";?>> productB

        <input type="radio" name="mb_product_info" value="productC"<?php echo ($member['mb_productA'] == "productC") ? " checked" : "";?>> productC

    </td>

  </tr>

</tbody>

</table>

 

<br>

 

<table class="peinfo01">

<thead>

  <tr>

    <th class="peinfo01-a01">

    상품의 시리얼넘버

    </th>

  </tr>

</thead>

<tbody>

  <tr>

    <td class="peinfo01-a01">

        <input type="text" name="mb_product_sn" value="<?php echo $member['mb_product_sn'] ?>" id="mb_product_sn" class="frm_input" size="50">

    </td>

  </tr>

</tbody>

</table>

 

를 넣었습니다.

 

 

<div class="btn_confirm">

    <a href="<?php echo G5_URL ?>" class="btn_cancel">취소</a>

    <input type="submit" value="<?php echo $w==''?'회원가입':'정보수정'; ?>" id="btn_submit" class="btn_submit" accesskey="s">

</div>

</form>

 

 

그리고,

 

register_form_update,php 파일에는

 

if ($w == '') {

    $sql = " insert into {$g5['member_table']}

                set mb_id = '{$mb_id}',

                     mb_password = '".get_encrypt_string($mb_password)."',

                     mb_name = '{$mb_name}',

                     중간생략

                     mb_10 = '{$mb_10}'

                     {$sql_certify} ";

 

밑에
    $sql = " insert into {$g5['member_addinfo_table']}

                set mb_id = '{$mb_id}',

                     mb_product_info = '{$mb_product_info}',

                     mb_product_sn = '{$mb_product_sn}',

                     {$sql_certify} ";

를 추가하고

 

$sql = " update {$g5['member_table']}

                set mb_nick = '{$mb_nick}',

                    mb_mailling = '{$mb_mailling}',

                    중간생략

                    mb_10 = '{$mb_10}'

                    {$sql_password}

                    {$sql_nick_date}

                    {$sql_open_date}

                    {$sql_email_certify}

                    {$sql_certify}

              where mb_id = '$mb_id' ";

    sql_query($sql);

 

밑에

    $sql = " update {$g5['member_addinfo__table']}

                set mb_product_info = '{$mb_product_info}',

                     mb_product_sn = '{$mb_product_sn}',

                    {$sql_password}

                    {$sql_nick_date}

                    {$sql_open_date}

                    {$sql_email_certify}

                    {$sql_certify}

              where mb_id = '$mb_id' ";

    sql_query($sql);

 

를 추가했습니다.

 

그런데, 회원가입이 안되더라구요.

 

고수님들의 조언 부탁드립니다.

감사합니다.

 

 

 

 

 

 

댓글을 작성하려면 로그인이 필요합니다.

답변 5개

채택된 답변
+20 포인트

      {$sql_password}

                    {$sql_nick_date}

                    {$sql_open_date}

                    {$sql_email_certify}

                    {$sql_certify}

값들~

 member_table 에 본인인증, 성별 등에 대한 필드가 들어가는 겁니다.

g5_member_addinfo 테이블 작업시 해당 하는 부분은 지워야 해요~

 

==============================

밑에
    $sql = " insert into {$g5['member_addinfo_table']}

                set mb_id = '{$mb_id}',

                     mb_product_info = '{$mb_product_info}',

                     mb_product_sn = '{$mb_product_sn}',

                     {$sql_certify} ";

를 추가하고

================================

=---->

    $sql = " insert into {$g5['member_addinfo_table']}

                set mb_id = '{$mb_id}',

                     mb_product_info = '{$mb_product_info}',

                     mb_product_sn = '{$mb_product_sn}' ";

 

=========================================

 

   $sql = " update {$g5['member_addinfo__table']}

                set mb_product_info = '{$mb_product_info}',

                     mb_product_sn = '{$mb_product_sn}',

                    {$sql_password}

                    {$sql_nick_date}

                    {$sql_open_date}

                    {$sql_email_certify}

                    {$sql_certify}

              where mb_id = '$mb_id' ";

    sql_query($sql);

 

==================================

--->>>>

   $sql = " update {$g5['member_addinfo__table']}

                set mb_product_info = '{$mb_product_info}',

                     mb_product_sn = '{$mb_product_sn}'

              where mb_id = '$mb_id' ";

    sql_query($sql);

==========================

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

W
Willfor716
2년 전
답변 감사드립니다.

알려주신데로 해 보았는데 회원가입이 완료가 되지를 않네요.

설명하신 내용이 이렇게 하는 것이 맞는 건가요?

insert 추가 부분에

$sql = " insert into {$g5['member_addinfo_table']}
set mb_id = '{$mb_id}',
mb_product_info = '{$mb_product_info}',
mb_product_sn = '{$mb_product_sn}',
{$sql_certify} ";



update 추가 부분에

$sql = " update {$g5['member_addinfo__table']}
set mb_product_info = '{$mb_product_info}',
mb_product_sn = '{$mb_product_sn}',
where mb_id = '$mb_id' ";
sql_query($sql);

이렇게 했는데 안되네요.

제가 틀린 부분이 있는지 확인 부탁 드립니다.
감사합니다.
W
Willfor716
2년 전
그리고 이 부분도 있었는데 이렇게 하는 것은 맞는 것인가요?

register_form_update,php 파일 윗부분

if(!$mb_id)
alert('회원아이디 값이 없습니다. 올바른 방법으로 이용해 주십시오.');

if(!$mb_id)
alert('회원아이디 값이 없습니다. 올바른 방법으로 이용해 주십시오.');

$mb_password = isset($_POST['mb_password']) ? trim($_POST['mb_password']) : '';
$mb_password_re = isset($_POST['mb_password_re']) ? trim($_POST['mb_password_re']) : '';
$mb_name = isset($_POST['mb_name']) ? trim($_POST['mb_name']) : '';
$mb_nick = isset($_POST['mb_name']) ? trim($_POST['mb_name']) : '';
$mb_email = isset($_POST['mb_email']) ? trim($_POST['mb_email']) : '';
$mb_sex = isset($_POST['mb_sex']) ? trim($_POST['mb_sex']) : "";
$mb_birth = isset($_POST['mb_birth']) ? trim($_POST['mb_birth']) : "";
$mb_homepage = isset($_POST['mb_homepage']) ? trim($_POST['mb_homepage']) : "";

중간생략

$mb_8 = isset($_POST['mb_8']) ? trim($_POST['mb_8']) : "";
$mb_9 = isset($_POST['mb_9']) ? trim($_POST['mb_9']) : "";
$mb_10 = isset($_POST['mb_10']) ? trim($_POST['mb_10']) : "";
$mb_product_info = isset($_POST['mb_product_info']) ? trim($_POST['mb_product_info']) : "";
$mb_product_sn = isset($_POST['mb_product_sn']) ? trim($_POST['mb_product_sn']) : "";

이렇게 추가했었습니다.

그런데 안되네요.
이 부분도 확인 부탁드립니다.
감사합니다.

댓글을 작성하려면 로그인이 필요합니다.

플라이
2년 전

Db쿼리를 출력시켜서 해당 쿼리가 정상적으로 실행되는지 오류는 없는지 디버깅해서 체크해보셔야 할듯 합니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

W
Willfor716
2년 전
답변 주셔서 감사합니다.
그런데 제가 초보이다보니 말씀하신 디버깅해서 체크해 보는 것은 어떻게 하는 건가요?
감사합니다.

댓글을 작성하려면 로그인이 필요합니다.

2년 전

우선 $sql_certify 가 어떤 값인지 알수 없는것 같고

update 부에 오타로 유추되는 구문이 있는것 같습니다. : member_addinfo__table

 

`mb_datetime` DATETIME NOT NULL,

의 경우는 기본값이 없는 상태에서 전달된 값이 없어서 발생하는 문제가 아닐까 생각되고

값이 없어도 동작해야 한다면

`mb_datetime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,

로 변경해볼수 있을것 같습니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 3개

W
Willfor716
2년 전
답변 주셔서 감사합니다.

말씀하신 부분 체크해봤는데
==> update 부에 오타로 유추되는 구문이 있는것 같습니다. : member_addinfo__table
이 부분은 어떤 부분인지요?

그리고,
==> `mb_datetime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
이 부분은
`mb_datetime` TIMESTAMP NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
이렇게 바꿨는데 맞는 건가요?

확인 부탁드립니다.
감사합니다.
배르만
2년 전
유추되는 부분은 다음과 같습니다.
[code]
member_addinfo__table // 오타
member_addinfo_table // 정상
[/code]

컬럼 정의부는 괄호 빼고 사용해도 됩니다.
https://dev.mysql.com/doc/refman/8.0/en/timestamp-initialization.html
[code]
`mb_datetime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
[/code]

' ON UPDATE CURRENT_TIMESTAMP' 의 경우
row 수정시 마다 최신 시각으로 자동 업데이트 되는 기능이므로 필요할 경우만 사용합니다.
W
Willfor716
2년 전
답변 감사드립니다.

그런데, 말씀하신 오타 수정하고.

`mb_datetime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP

로 바꿨는데도 안되네요.
뭐가 문제일까요?
좀더 확인 해 주실 수 있나요?
감사합니다.

댓글을 작성하려면 로그인이 필요합니다.

팬텀디자인

mb_product_info

mb_product_sn

 

위 2개 필드만 쓰실거면, 필드도 2개만 추가하시면 됩니다.

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

W
Willfor716
2년 전
답변 감사드립니다.
이 필드값 이외에 추가로 여러 필드값을 추가할 예정이라
새로운 테이블 만들려 하는 것이에요.

댓글을 작성하려면 로그인이 필요합니다.

2년 전

g5_member_addinfo 에 넣는 부분은 없어 보이는데 멤버테이블에 추가 할려는 필드는 추가해두신 상태신건가요?

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

W
Willfor716
2년 전
예.
정상적으로 필드는 추가해 넣었습니다.
W
Willfor716
2년 전
CREATE TABLE `g5_member_addinfo` (
`mb_no` INT(11) NOT NULL AUTO_INCREMENT,
`mb_id` VARCHAR(20) NOT NULL DEFAULT '' COLLATE 'utf8_general_ci',
`mb_datetime` DATETIME NOT NULL,
`mb_update_ip` VARCHAR(255) NOT NULL DEFAULT '' COLLATE 'utf8_general_ci',
`mb_product_info` VARCHAR(255) NOT NULL DEFAULT '' COLLATE 'utf8_general_ci',
`mb_product_sn` VARCHAR(255) NOT NULL DEFAULT '' COLLATE 'utf8_general_ci',
PRIMARY KEY (`mb_no`) USING BTREE,
UNIQUE INDEX `mb_id` (`mb_id`) USING BTREE,
INDEX `mb_datetime` (`mb_datetime`) USING BTREE
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
;

이렇게 넣었습니다.

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인