어제 질문했던 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문전체를 구분하시든 아니면 필드를 구분해주셔야 할거같아요~~
답변을 작성하시기 전에 로그인 해주세요.