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

어제 질문했던 sql 쿼리 채택완료

서켠 4년 전 조회 3,503

어제 질문 했었는데요..

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

</p>

<p>$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개

채택된 답변
+20 포인트
s
4년 전

실수가 있었습니다.

</p>

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

<p><code>

이렇게 해주셔야 하는건데

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

답변에 대한 댓글 1개

서켠
4년 전
그부분은 제가 고쳤었어요 :) 안되더라구요.. 뭐가 문제인지

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

s
4년 전

이렇게 해주시면 어떨가요?

</p>

<p>$table_arr = array( "g5_member", "g5_memo", "g5_member", .... , "g5_qa_content", "q_stock_own");</p>

<p>foreach ($table_arr as $tbl) {</p>

<p>    if({$tbl} == "g5_member"){</p>

<p>        $sql = "update {$tbl} </p>

<p>                set mb_id = '{$str}', me_send_mb_id = '{$str}'</p>

<p>               where mb_id = '{$username}' or mb_nick = '{$username}' ";</p>

<p>    }</p>

<p>    if({$tbl} == "g5_memo"){</p>

<p>        $sql = "update {$tbl} </p>

<p>                set me_send_mb_id = '{$str}'</p>

<p>               where me_send_mb_id = '{$username}' ";</p>

<p>    }</p>

<p>    if({$tbl} == "g5_point"){</p>

<p>        $sql = "update {$tbl} </p>

<p>                set mb_id = '{$str}', po_rel_id = '{$str}'</p>

<p>               where mb_id = '{$username}' or po_rel_id = '{$username}' ";</p>

<p>    }else{</p>

<p>        $sql = "update {$tbl} </p>

<p>                    set mb_id = '{$str}'</p>

<p>                where mb_id = '{$username}' ";</p>

<p>    }</p>

<p>    sql_query($sql);</p>

<p>}</p>

<p>

좀 복잡하지만 필드를 구분하자면...

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

답변에 대한 댓글 1개

서켠
4년 전
500오류가 뜨네요 ..

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

RevDev
4년 전
일단..

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

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

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

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

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

 

 

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

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

"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.... 테이블들에는 해당 컬럼이 없기때문에 실행이 안되는것 같습니다.

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

답변에 대한 댓글 1개

서켠
4년 전
네.. mb_id 만 하니까 잘 되네요 ㅠㅠ
포인트 처럼 po_rel_id 같은거는 어떻게 작성해야 하나요?

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

진서기
4년 전
sql_query($sql, true); 로 변경해서 오류를 확인하세요.

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

 

위 모든 테이블에 

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

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

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

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

로그인