#MySQL

4개의 글
개발

한글이 ???로 깨졌다면 — MySQL utf8mb4, 진짜 원인은 따로 있다

분명히 잘 들어가던 한글 데이터가 어느 날 갑자기 `???`나 `한글` 같은 외계어로 바뀌어 보인 적 있으신가요. 게시판에 글을 쓰면 멀쩡한데, 터미널에서 덤프를 떴다가 다시 넣으면 죄다 깨지는 상황. 많은 개발자가 여기서 "테이블 문자셋을 utf8로 바꿨는데 왜 안 되지?"라며 몇 시간을 날립니다. > 한글 깨짐의 90%는 파일이 잘못된 게 아니라...

2026.06.25 · 읽기 6분 · 조회 4
한글이 ???로 깨졌다면 — MySQL utf8mb4, 진짜 원인은 따로 있다
개발

화면이 갑자기 느려졌다면 — EXPLAIN으로 MySQL 인덱스 문제 잡기

목록 페이지가 갑자기 느려진 적 있으신가요? 어제까지 멀쩡하던 화면이 오늘따라 빙글빙글 돌기만 합니다. 코드는 하나도 안 바꿨는데 말이죠. 저도 처음 이 상황을 겪었을 때 서버를 의심하고, 네트워크를 의심하고, 심지어 컴퓨터를 한 번 껐다 켰습니다. 범인은 엉뚱한 곳에 있었습니다. 데이터가 쌓이면서 인덱스 없는 쿼리가 테이블 전체를 훑기 시작한 것이죠. 오...

2026.06.24 · 읽기 8분 · 조회 4
화면이 갑자기 느려졌다면 — EXPLAIN으로 MySQL 인덱스 문제 잡기
개발

PHP mysqli, 문자열 이어붙이기 대신 prepared statement로 SQL 인젝션 막기

사용자 입력을 SQL에 직접 이어붙이면 SQL 인젝션에 노출된다. 결론부터 말하면 mysqli의 prepared statement(준비된 쿼리) 를 쓰면 값과 쿼리 구문이 분리되어 대부분의 인젝션을 원천 차단할 수 있다. 위험한 코드 ```php // 절대 이렇게 쓰지 말 것 $id = $_GET['id']; $sql = "SELECT FROM member...

2026.06.24 · 읽기 2분 · 조회 7
PHP mysqli, 문자열 이어붙이기 대신 prepared statement로 SQL 인젝션 막기
개발

MySQL 한글 깨짐, utf8mb4로 해결하는 순서 (PHP/임포트 포함)

MySQL에 한글을 저장했는데 글자가 `???` 나 깨진 문자로 보인 적 있으신가요? 원인은 대부분 문자셋(charset) 불일치입니다. 한 군데만 어긋나도 깨집니다. 이 글에서 어디를 맞춰야 하는지 순서대로 정리합니다. 결론부터: utf8 말고 utf8mb4 MySQL의 `utf8`은 사실 최대 3바이트만 저장하는 반쪽짜리라 이모지·일부 한자에서 문제가 ...

2026.06.23 · 읽기 3분 · 조회 14
MySQL 한글 깨짐, utf8mb4로 해결하는 순서 (PHP/임포트 포함)