CI 묻고 답하기

제목 코드이그나이터.. 데이터 날려먹었습니다....
글쓴이 정석모 작성시각 2015/05/01 11:00:00
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 12506   RSS
안녕하세요 선배님들.
코드이그나이터에 입문한지 얼마 안되는 초보자 인사 드립니다.

어제 큰 사고 하나 쳤습니다.
테이블의 데이터를 싹 날려 먹었습니다 ㅜㅜ

원인이 무엇인가 하면....


$this->db->where('user_id', $this->input->post('user_id', TRUE));
$this->db->delete('user');

POST 값에 user_id가 없을 경우,
$this->input->post('user_id', TRUE)는 FALSE를 반환 합니다.

만들어진 쿼리는.....

delete user where user_id=0

FALSE가 쿼리에 바인딩 되면 숫자 0으로 바뀝니다.

결과는.... 전체삭제..... ㅜㅜ 흐앙 ㅜㅜ


mysql에서 varchar를 평가할 때 숫자 0으로 비교하면 조건문 자체가 무시되는거 같아요.

그래서 post 코어에서 FALSE 반환을 ''(공백) 반환으로 변경하였습니다.


이런 경우에는 어떻게 해결을 봐야 하나요?

코드이그나이터 정말 훌륭한데 제가 사용을 잘 못하는 걸 수도 있겠네요.


조언 부탁 드립니다.
 다음글 codeigniter 사용자포름 소스설치관련 (1)
 이전글 CI 경로관련 질문 드리겠습니다 (4)

댓글

헤덥 / 2015/05/01 15:01:34 / 추천 0
$user_id = $this->input->post('user_id', TRUE);
if($
user_id) {
$this->db->where('user_id', $user_id);

$this->db->delete('user');
}
걍 간단하게......이런식으로? 
변종원(웅파) / 2015/05/01 15:43:06 / 추천 0
데이터를 컨트롤러에서 체크하지 않고 그냥 모델로 넘기니 예기치않은 결과가 나온겁니다.

데이터는 항상 체크를 해야합니다. 헤덥님이 올리신 것처럼 체크를 해서 처리를 해야합니다.
정석모 / 2015/05/01 21:02:12 / 추천 0
결국 제 자신의 어처구니 없이 잘못된 코딩이었습니다.

뼈저리게 반성 합니다.

이제 안그럴께요. ㅜㅜ