다중테이블에 db값 insert
본문
안녕하세요.
회원가입페이지에서 추가적으로 정보를 입력할때
새로운테이블 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);
==========================
g5_member_addinfo 에 넣는 부분은 없어 보이는데 멤버테이블에 추가 할려는 필드는 추가해두신 상태신건가요?
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,
로 변경해볼수 있을것 같습니다.
Db쿼리를 출력시켜서 해당 쿼리가 정상적으로 실행되는지 오류는 없는지 디버깅해서 체크해보셔야 할듯 합니다.