쿼리문으로 실패인지 성공인지 어떻게 체크하나요
본문
$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
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차 업데이트를 실행하면 되는 겁니다.
진행하시고자 하는 내용이 구체적으로 어떤 것인지 모르니 여기까지만 조언드릴 수 있네요
!-->