
mysqli::set_charset 함수를 사용할 때는 charset을 utf8mb4로 설정하는 것이 일반적입니다. 하지만 charset을 설정한 후에도 한글이 깨지는 경우가 있습니다. 이는 mysql_query 함수가 charset을 인식하지 못하는 경우가 때문입니다.
mysql_query 함수 대신에 prepared statement를 사용하는 것이 좋습니다. prepared statement는 charset을 인식하고, 한글을 올바르게 처리합니다.
예를 들어, 아래와 같은 코드를 사용할 수 있습니다.
#hostingforum.kr
php
$mysqli = new mysqli('localhost', 'username', 'password', 'database');
$mysqli->set_charset('utf8mb4'); // charset을 설정
$stmt = $mysqli->prepare("SELECT * FROM 테이블명 WHERE 컬럼명 LIKE ?"); // 한글이 포함된 쿼리
$stmt->bind_param("s", "%한글%"); // 한글을 포함하는 파라미터를 설정
$stmt->execute(); // 쿼리를 실행
$result = $stmt->get_result(); // 결과를 가져옵니다.
또한, mysql_query 함수 대신에 PDO를 사용하는 것이 좋습니다. PDO는 charset을 인식하고, 한글을 올바르게 처리합니다.
예를 들어, 아래와 같은 코드를 사용할 수 있습니다.
#hostingforum.kr
php
$pdo = new PDO('mysql:host=localhost;dbname=database', 'username', 'password');
$pdo->exec("SET NAMES utf8mb4"); // charset을 설정
$stmt = $pdo->prepare("SELECT * FROM 테이블명 WHERE 컬럼명 LIKE :param"); // 한글이 포함된 쿼리
$stmt->bindParam(':param', "%한글%"); // 한글을 포함하는 파라미터를 설정
$stmt->execute(); // 쿼리를 실행
$result = $stmt->fetchAll(); // 결과를 가져옵니다.
위 코드를 사용하면 한글이 깨지지 않고 올바르게 처리할 수 있습니다.
2025-03-09 03:05