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

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

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이라는 값이있다면
삭제를 하고 뒤의 필드의 값을 앞으로 당겨서 넣는 것이라서요 ㅠㅠ
조금 이해는 됩니다만 어렵네요 ㅠㅠ

답변을 작성하시기 전에 로그인 해주세요.
전체 15,337
QA 내용 검색
filter #php ×

회원로그인

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