어제 질문했던 sql 쿼리

어제 질문했던 sql 쿼리

QA

어제 질문했던 sql 쿼리

본문

어제 질문 했었는데요..

플래토님이 친절하게 답변 달아주셨지만


$table_arr = array( "g5_member", "g5_memo", "g5_point", "g5_write_free", "g5_write_notice", "g5_write_rwmo", "g5_write_lottos", "g5_write_auction", "g5_write_stocks", "g5_write_in_offic", "g5_write_regViewList", "g5_qa_content", "q_stock_own");
 
foreach ($table_arr as $tbl) {
    $sql = "update {$tbl} 
                set mb_id = '{$strq}',
                      mb_nick = '{$strq}',
                      po_rel_id = '{$strq}',
                      me_send_mb_id = '{$strq}'
               where mb_id = '{$username}' ";
     sql_query($sql);
}

 

이렇게 작성하니까 작동을 안하더라구요.. 뭐가 문제일까요?

다른거 보니까 $g5['member_table'] 이렇게 쓰던데 $g5['member_table'], $g5['memo_table'] 이렇게 쓰니까 500 에러뜨고.. ㅠㅠ 어디가 문제일까요..? 도와주세요 ㅠㅠ

이 질문에 댓글 쓰기 :

답변 5

실수가 있었습니다.



if({$tbl} == "g5_member"){
        $sql = "update {$tbl} 
                set mb_id = '{$str}', mb_nick = '{$str}'
               where mb_id = '{$username}' or mb_nick = '{$username}' ";
    }


이렇게 해주셔야 하는건데
이렇게 해주시면 어떨가요?

$table_arr = array( "g5_member", "g5_memo", "g5_member", .... , "g5_qa_content", "q_stock_own");
foreach ($table_arr as $tbl) {
    if({$tbl} == "g5_member"){
        $sql = "update {$tbl} 
                set mb_id = '{$str}', me_send_mb_id = '{$str}'
               where mb_id = '{$username}' or mb_nick = '{$username}' ";
    }
    if({$tbl} == "g5_memo"){
        $sql = "update {$tbl} 
                set me_send_mb_id = '{$str}'
               where me_send_mb_id = '{$username}' ";
    }
    if({$tbl} == "g5_point"){
        $sql = "update {$tbl} 
                set mb_id = '{$str}', po_rel_id = '{$str}'
               where mb_id = '{$username}' or po_rel_id = '{$username}' ";
    }else{
        $sql = "update {$tbl} 
                    set mb_id = '{$str}'
                where mb_id = '{$username}' ";
    }
    sql_query($sql);
}

좀 복잡하지만 필드를 구분하자면...
sql_query($sql, true); 로 변경해서 오류를 확인하세요.

php 오류 출력되게 설정하세요. 500에러는 오류는 나는데 오류 출력을 하지 않게 하면 뜹니다.

 

위 모든 테이블에 

해당 필드가 있다면 처리 되겠지만 없는 필드를 업데이트 하려고 하면 오류가 뜨게 됩니다.

"g5_member", "g5_memo", "g5_point", "g5_write_free", "g5_write_notice", "g5_write_rwmo", "g5_write_lottos", "g5_write_auction", "g5_write_stocks", "g5_write_in_offic", "g5_write_regViewList", "g5_qa_content", "q_stock_own"

g5_point를 제외한 테이블들엔 po_rel_id, me_send_mb_id 란 컬럼이 없을텐데요..

지금 돌리시는 쿼리문은

g5_member, g5_member, g5_point 등등.. 테이블들에서 po_rel_id, me_send_mb_id 값을 변경해주는 구문인데 앞서 말씀드리듯 g5_member,g5_memo.... 테이블들에는 해당 컬럼이 없기때문에 실행이 안되는것 같습니다.

일단..

loop 돌려서 update query 실행하시는데 $tbl은 table명이 대입될거고..

근데 $strq, $username 등의 변수값은 위에 정의되어 있나요?

그외에 변수는 정의가 안되있어서 동작이 안되겠지요~~

그리고 table마다 컬럼이 다 다르니.. 

table별로 query문전체를 구분하시든 아니면 필드를 구분해주셔야 할거같아요~~

 

 

답변을 작성하시기 전에 로그인 해주세요.
전체 224
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT