쿼리문으로 실패인지 성공인지 어떻게 체크하나요 채택완료
</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개
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개
모든 답변자분들 시간내어주셔서 감사합니다^^
댓글을 작성하려면 로그인이 필요합니다.
각 필드의 값이 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개
wr_id가 필요는없는 상태입니다..
음.. 그 게시판의 모든 글에서 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의값)
이렇게 변경되겠네요