DB 바로 수정하기
관련링크
http://DB,aql
74회 연결
본문
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 부분을 최소화 하신 후...
$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']}' ");
}
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
it_id값이 a-1, a-3~~~~이런 모양이 맞나요?
값을 일일이 넣어서 코드를 만드는 것 자체가 어려운 일이니 아래처럼
list스킨(list.10.skin.php ) 상단에 넣어서 페이지를 한번 실행한 후 삭제하세요
$idStr = 'a-1,a-3,b-3.............'; // 500개 모두 나열
$odStr ='1,5,7.......................'; //위의 500개와 순서가 같도록 나열
$idArr = explode(',', $idStr);
$odArr = explode(',', $odStr);
foreach($idArr as $key=>$val){
$od_num = $odArr[$key];
sql_query("update g5_shop_item set it_order='$od_num' where it_id='$val' ");
}
!-->
규칙이 없다면 디비에서 해도 똑같이 하나씩 처리를 해주셔야 합니다.
답변을 작성하시기 전에 로그인 해주세요.