개발자의 하루

DB입력은 신중하고 또 신중하게 본문

Client

DB입력은 신중하고 또 신중하게

단독질주 2017. 8. 22. 08:52
반응형


사건의 요는 DB에서 데이터를 가지고 와서 배열을 만들고 배열안의 내용을 토대로 결과를 보는 것 이었습니다.


하지만 이상하게 특정 배열에서만 체크가 안되는 현상이 발생되었습니다.


이거 삽질하려다 2일은 보낸것 같아 허망하네요. 소스 상에는 전혀 문제가 없는데 결과가 안나오니 ㅠㅠ


<?

$data = "1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0";

$tmp = explode(',',$data);

if($tmp[[0]=='0') {...}

else if($tmp[1]=='0') {...}

?>


대충 이런 식이었는데 위 $data를 DB에서 불러오는 방식이었습니다.


아무리 봐도 이상한 점이 없는데 실행 결과가 안 나오던 터 금일 새벽에 드디어 문제를 풀었습니다 ^^; 휴...



결론부터 말씀 드리면 DB에 데이터 삽입 과정에서 실수 가 있었던 것입니다.


위 배열을 쉽게 구성하고자 


2,3,0,0,0,3,3,3,3,1

0,2,0,0,0,0,0,3,3,0

0,3,1,0,0,0,0,0,3,0

0,3,3,1,0,0,0,0,0,0

0,3,3,3,1,0,0,0,0,0

0,0,3,0,0,1,0,0,0,0

0,0,0,0,0,0,1,0,0,0

0,0,0,0,0,0,0,1,0,0

0,0,0,0,0,0,0,0,1,0

0,0,0,0,0,0,0,0,0,1

0,0,0,0,0,0,0,0,0,1


이런 식으로 테스트 파일을 만들어 phpmyadmin을 사용해서 인서트 시켰는데


이게 특정 배열에서만 인식을 하지 못하는 것이었죠. 9, 18, 27 번등에서


9번 배열의 경우 값이 1이고 print_r로 봐도 1로 나왔고


if에서 1인지만 체크 하면 되는 것인데 아에 체크를 하지 못하는 불상사가 발생되었던 것입니다.


DB인서트 과저에서 txt파일을 그대로 넣어 버려 줄 바꿈이 \n까지 같이 들어가서 1이 아닌 1\n라고 나오게 된 것이죠 ㅠㅠ


2,3,0,0,0,3,3,3,3,1,0,2,0,0,0,0,0,3,3,0,0,3,1,0,0,0,0,0,3,0,0,3,3,1,0,0,0,0,0,0,0,3,3,3,1,0,0,0,0,0,0,0,3,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1


해당 데이터를 지우고 한줄로 쭉 입력해서 인서트 시키니 정상적으로 판단 할 수 있게 되었습니다.


문제의 원인을 알고 나니 허탈할 뿐이네요. 이걸로 2일이나 고생하고 별의별 생각을 다 했으니 말이죠.





반응형