채택완료
SQL UPDATE 반복문 질문입니다.
Copy
$arr = array ('2380','2377','3767','3798',,,,,,,'5001');
$sql = "update TABLE set column1 = '1', column2 = '2', column3 = '2' where ID in (".implode(",",$arr).") ";.
.
.
$sql = "update TABLE set column1 = '1', column2 = '4', column3 = '0' where ID in (".implode(",",$arr).") ";
이런식으로 약 1000개를 업데이트 해야되는데요.
반복문을 써야할것 같아서 검색해보니 where절의 ID는 저런식을 하면 된다고 찾았는데
나머지 컬럼은 다 제각각이라.. 어떻게 해야할지 ,, 도움좀 부탁드립니다.
나머지도 in으로 하면되나요?
답변 2개 / 댓글 6개
채택된 답변
+20 포인트
그럼 간단합니다
해당값을 들고있는 배열이 $arr라고했을때
for($i=0;$i<count($arr);$i++){
$sql = "update TABLE set column1 = '".$arr[$i]['colum1']."', column2 = '".$arr[$i]['colum2']."', column3 = '".$arr[$i]['colum3']."' where ID = '".$arr[$i]['ID']."'";
sql_query($sql);
}
이렇게하면 되겠네요
답변에 대한 댓글 4개
그 달라지는 데이터값을 어떤식으로 들고오나요?
ID값도 한 배열에 들어가있는데 저렇게되면 각 아이디에 들어갈 컬럼데이터 값이 섞이지않을까요?
ID값별로 들어갈 데이터값이 정의되어있어야 할것같네요
예를들자면..
$arr = array(array('id'=>'2380','column1'=>'1','column2'=>'2','column3'=>'0'),
array('id'=>'2377','column1'=>'2','column2'=>'8','column3'=>'0')...)
이런식으로되어있어야
각 아이디별로 컬럼값이 정상적으로 넣을수있고 여기서 반복문만 돌리면 끝날일이니깐요
ID값도 한 배열에 들어가있는데 저렇게되면 각 아이디에 들어갈 컬럼데이터 값이 섞이지않을까요?
ID값별로 들어갈 데이터값이 정의되어있어야 할것같네요
예를들자면..
$arr = array(array('id'=>'2380','column1'=>'1','column2'=>'2','column3'=>'0'),
array('id'=>'2377','column1'=>'2','column2'=>'8','column3'=>'0')...)
이런식으로되어있어야
각 아이디별로 컬럼값이 정상적으로 넣을수있고 여기서 반복문만 돌리면 끝날일이니깐요
네! 말씀하신대로 데이터를 불러오고잇습니다
그래서 for문으로 돌릴까 햇는데
혹시나해서 검색해보니 여기까지 와있습니다.
아주 정확히 말씀하신대로 데이터는 불러오고잇어요.
그럼 그냥 update문 전체를 포문으로 해야할까요?
[code]
arr = 데이터;
update
테이블
set
컬럼1 = arr[i]['컬럼1데이터'],
컬럼2 = arr[i]['컬럼2데이터'],
컬럼3 = arr[i]['컬럼3데이터']
where
id = arr[i]['id'];
[/code]
그냥.. 정석?대로 포문을 돌리는게 맞을까요?
그래서 for문으로 돌릴까 햇는데
혹시나해서 검색해보니 여기까지 와있습니다.
아주 정확히 말씀하신대로 데이터는 불러오고잇어요.
그럼 그냥 update문 전체를 포문으로 해야할까요?
[code]
arr = 데이터;
update
테이블
set
컬럼1 = arr[i]['컬럼1데이터'],
컬럼2 = arr[i]['컬럼2데이터'],
컬럼3 = arr[i]['컬럼3데이터']
where
id = arr[i]['id'];
[/code]
그냥.. 정석?대로 포문을 돌리는게 맞을까요?
답변을 작성하려면 로그인이 필요합니다.
where in을 쓰는것은 id값만 달라질때 쓰나보네요 ㅎㅎ