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

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

보들이윤 9년 전 조회 4,075

</p><p>$sql = "update g5_write_test set wr_1=0 where wr_1=1000;</p><p>sql_fetch($sql);</p><p> </p><p>$sql = "update g5_write_test set wr_2=0 where <span style="font-size: 14.6667px;">wr_2</span>=<span style="font-size: 14.6667px;">1000</span>;</p><p>sql_fetch($sql);</p><p> </p><p>$sql = "update g5_write_test set wr_3=0 where <span style="font-size: 14.6667px;">wr_3</span>=<span style="font-size: 14.6667px;">1000</span>;</p><p>sql_fetch($sql);</p><p>

 

이런식으로 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개

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

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

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

답변에 대한 댓글 2개

보들이윤
9년 전
슈와이님 답변감사드힙니다
업데이트를 하는 방법은 충분히 인지하고있지만
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의값)
이렇게 변경되겠네요
보들이윤
9년 전
감사합니다 소스를 보고 떠오르는게 있어서 적용 성공하였습니다
모든 답변자분들 시간내어주셔서 감사합니다^^

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

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

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

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

</p><p>$row = sql_fetch(" select wr_1,wr_2,wr_3 from g5_write_test where wr_id = '{$wr_id}' ");</p><p>$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}' ");</p><p>        if($result)
            sql_query(" update g5_write_test set {$key} = wr_{$n} where wr_id = '{$wr_id}' ");
    }
    $n++;
}</p><p>
 

 

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

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

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

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

답변에 대한 댓글 1개

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

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

9년 전

sql_fetch 말고 sql_query 를 써보시구요 

 

$temp = sql_query($sql);

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

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

답변에 대한 댓글 1개

보들이윤
9년 전
쿼리가 돌아갔는지 안돌아갔는지만 체크하면
조건문을 통해서 원하는 로직이 될것같은데 조금 어렵네요 ㅠㅠ
답변 감사합니다 ^^

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

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

로그인