분명히 잘 들어가던 한글 데이터가 어느 날 갑자기 `???`나 `한글` 같은 외계어로 바뀌어 보인 적 있으신가요. 게시판에 글을 쓰면 멀쩡한데, 터미널에서 덤프를 떴다가 다시 넣으면 죄다 깨지는 상황. 많은 개발자가 여기서 "테이블 문자셋을 utf8로 바꿨는데 왜 안 되지?"라며 몇 시간을 날립니다. > 한글 깨짐의 90%는 파일이 잘못된 게 아니라...
목록 페이지가 갑자기 느려진 적 있으신가요? 어제까지 멀쩡하던 화면이 오늘따라 빙글빙글 돌기만 합니다. 코드는 하나도 안 바꿨는데 말이죠. 저도 처음 이 상황을 겪었을 때 서버를 의심하고, 네트워크를 의심하고, 심지어 컴퓨터를 한 번 껐다 켰습니다. 범인은 엉뚱한 곳에 있었습니다. 데이터가 쌓이면서 인덱스 없는 쿼리가 테이블 전체를 훑기 시작한 것이죠. 오...
사용자 입력을 SQL에 직접 이어붙이면 SQL 인젝션에 노출된다. 결론부터 말하면 mysqli의 prepared statement(준비된 쿼리) 를 쓰면 값과 쿼리 구문이 분리되어 대부분의 인젝션을 원천 차단할 수 있다. 위험한 코드 ```php // 절대 이렇게 쓰지 말 것 $id = $_GET['id']; $sql = "SELECT FROM member...
MySQL에 한글을 저장했는데 글자가 `???` 나 깨진 문자로 보인 적 있으신가요? 원인은 대부분 문자셋(charset) 불일치입니다. 한 군데만 어긋나도 깨집니다. 이 글에서 어디를 맞춰야 하는지 순서대로 정리합니다. 결론부터: utf8 말고 utf8mb4 MySQL의 `utf8`은 사실 최대 3바이트만 저장하는 반쪽짜리라 이모지·일부 한자에서 문제가 ...