쿼리문으로 실패인지 성공인지 어떻게 체크하나요

쿼리문으로 실패인지 성공인지 어떻게 체크하나요

QA

쿼리문으로 실패인지 성공인지 어떻게 체크하나요

본문


$sql = "update g5_write_test set wr_1=0 where wr_1=1000;
sql_fetch($sql);
 
$sql = "update g5_write_test set wr_2=0 where wr_2=1000;
sql_fetch($sql);
 
$sql = "update g5_write_test set wr_3=0 where wr_3=1000;
sql_fetch($sql);

 

이런식으로 wr_1 or wr_2 or wr_3필드에 값이 원래는 1000이 들어있습니다.

3개의 필드중에 한군데에만 1000이라는 값이있습니다.

wr_1,2,3중의 하나라도 값이 1000이면

해당 쿼리문을 실행합니다.

물론 3개의 쿼리문을 돌리지만 1개의 쿼리문은 무조건 돌아가는거죠

그런데 여기에서 하나 좀 질문이있는데요

예를들어 wr_2의 필드 값이 1000이라서 쿼리가 실행되어서

wr_2의 필드가 0으로 업데이트가된다면

wr_3의 필드의 값을 wr_2에 넣어주고 싶은데

 

첫번째 두번째 세번째 쿼리중 어떤쿼리가 실행됬느냐에 따라서

값들을 옮겨줘야하는데 체크를 하는방법을 모르겠네요

도움좀 부탁드립니다.

 

예를들어 wr_1의 값이 1000이라서 업데이트이후 0으로 바뀐다면

wr_2의값을 wr_1에 wr_3의값을 wr_2에 넣고싶습니다..

이 질문에 댓글 쓰기 :

답변 3

update g5_write_test set wr_1 = wr_2, wr_2 = wr_3 where wr_1 = 1000

update g5_write_test set wr_2 = wr_3 where wr_2 = 1000

슈와이님 답변감사드힙니다
업데이트를 하는 방법은 충분히 인지하고있지만
wr_1에 1000이없고 wr_2에 1000이 있다면
아래 update g5_write_test set wr_2 = wr_3 where wr_2 = 1000 쿼리가 실행되어서

wr_1 = 2000
wr_2 = 3000
wr_3 = 1000
이라고 가정했을때에는 아래 쿼리가 실행된다면
wr_1 = 2000(기존의 wr_1의값 2000)
wr_2 = 1000
wr_3 = 1000(기존의 wr_3의값)
이렇게 변경되겠네요

sql_fetch 말고 sql_query 를 써보시구요 

 

$temp = sql_query($sql);

print_r($temp); 하시면 적용된 rows 값이 나올것 같기도 ...

각 필드의 값이 1000이면 1차 업데이트로 0을 입력하고

그 결과 각 필드의 값이 0이면 2차 업데이트로 다음 순서의 필드값을 입력하고자 하는 것이라면

아래와 같이 하는 것은 어떨까요?


$row = sql_fetch(" select wr_1,wr_2,wr_3 from g5_write_test where wr_id = '{$wr_id}' ");
$n = 2;
foreach($row as $key=>$val){
    if($val == 1000){
        $result = sql_query(" update g5_write_test set {$key} = '0' where wr_id = '{$wr_id}' ");
        if($result)
            sql_query(" update g5_write_test set {$key} = wr_{$n} where wr_id = '{$wr_id}' ");
    }
    $n++;
}
 

 

그런데 위와 같이 한다면 불필요한 쿼리문이 존재하게 됩니다.

최종 결과로 각 필드의 값이 1000일 때 다음 순서의 필드값이 입력되는 것이라면 1차 업데이트로 0을 입력할 필요없이 바로 2차 업데이트를 실행하면 되는 겁니다.

진행하시고자 하는 내용이 구체적으로 어떤 것인지 모르니 여기까지만 조언드릴 수 있네요

정말 친절한 답변 감사합니다^^
wr_id가 필요는없는 상태입니다..
음.. 그 게시판의 모든 글에서 1000이라는 값이있다면
삭제를 하고 뒤의 필드의 값을 앞으로 당겨서 넣는 것이라서요 ㅠㅠ
조금 이해는 됩니다만 어렵네요 ㅠㅠ

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

회원로그인

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