DB 바로 수정하기 채택완료
g5_shop_item 이라는 테이블에 it_id가 a-1이면 it_order를 2로 바꿔라 이거 어떻게 해야하나요?ㅜㅜ
예를들어
t_id가 a-1이면 it_order를 001
t_id가 a-3이면 it_order를 005
t_id가 b-3이면 it_order를 007
......
로 변경해라
그런데 이런걸 500개 정도 한번에 하려고 하는데 어떻게 해야할지 궁금합니다.
데이터는 엑셀로 있는데 관리자모드에서 일일히 수정하려니 하나하나 클릭해야 해서 너무 번거로운데 혹시 DB에서 바로 수정가능한가요?
답변 4개
id 종류나 컬럼 자료타입(int) 고려해서 수정/추가 후 테스트 해보세요.
테스트는 일단 $target_id 부분을 최소화 하신 후...
</p>
<p>$target_id = array('a-1', 'a-3', 'b-3');
$result = sql_query(" select it_id from g5_shop_item ", false);
for($i=0; $row = sql_fetch_array($result); $i++) {
if(!in_array($row['it_id'], $target_id)) continue;
switch($row['it_id']) {
case 'a-1' : $order_num = 1; break;
case 'a-3' : $order_num = 5; break;
case 'b-3' : $order_num = 7; break;
}
sql_query(" update g5_shop_item set it_order = '{$order_num}' where it_id = '{$row['it_id']}' ");
}</p>
<p>
댓글을 작성하려면 로그인이 필요합니다.
</p>
<p>it_id값이 a-1, a-3~~~~이런 모양이 맞나요?</p>
<p>값을 일일이 넣어서 코드를 만드는 것 자체가 어려운 일이니 아래처럼</p>
<p>list스킨(list.10.skin.php ) 상단에 넣어서 페이지를 한번 실행한 후 삭제하세요</p>
<p> </p>
<p>$idStr = 'a-1,a-3,b-3.............'; // 500개 모두 나열</p>
<p>$odStr ='1,5,7.......................'; //위의 500개와 순서가 같도록 나열</p>
<p>$idArr = explode(',', $idStr);</p>
<p>$odArr = explode(',', $odStr);</p>
<p>foreach($idArr as $key=>$val){</p>
<p> $od_num = $odArr[$key]; </p>
<p> sql_query("update g5_shop_item set it_order='$od_num' where it_id='$val' ");</p>
<p>}</p>
<p>
댓글을 작성하려면 로그인이 필요합니다.
select ... order by
case when t_id='a-1' then '001'
when t_id='a-3' then '005'
when t_id='b-31' then '007' else '999' end, it_order
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
update g5_shop_item set it_order= case when t_id='a-1' then '001'
when t_id='a-3' then '005'
when t_id='b-31' then '007' else '999' end