다중테이블에 db값 insert

다중테이블에 db값 insert

QA

다중테이블에 db값 insert

답변 5

본문

안녕하세요.

 

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

새로운테이블 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

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

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

답변 감사드립니다.

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

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

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

이렇게 했는데 안되네요.

제가 틀린 부분이 있는지 확인 부탁 드립니다.
감사합니다.

그리고 이 부분도 있었는데 이렇게 하는 것은 맞는 것인가요?

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'])          : "";

이렇게 추가했었습니다.

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

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

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
;

이렇게 넣었습니다.

mb_product_info

mb_product_sn

 

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

 

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

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

 

`mb_datetime` DATETIME NOT NULL,

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

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

`mb_datetime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,

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

답변 주셔서 감사합니다.

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

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

확인 부탁드립니다.
감사합니다.

유추되는 부분은 다음과 같습니다.


member_addinfo__table // 오타
member_addinfo_table  // 정상


컬럼 정의부는 괄호 빼고 사용해도 됩니다.
https://dev.mysql.com/doc/refman/8.0/en/timestamp-initialization.html

`mb_datetime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP


' ON UPDATE CURRENT_TIMESTAMP' 의 경우
row 수정시 마다 최신 시각으로 자동 업데이트 되는 기능이므로 필요할 경우만 사용합니다.

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

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