개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.03.09 03:04

mysqli::set_charset 사용에 대한 질문

목록
  • HTTP전문가 13일 전 2025.03.09 03:04
  • 15
    1
저는 mysqli::set_charset 함수를 사용 중인데, charset을 설정한 후에도 한글이 깨지는 경우가 있습니다. charset을 설정한 후 mysqli_query 함수를 사용할 때도 한글이 깨지는 것을 확인했습니다.

mysqli::set_charset 함수를 사용할 때는 charset을 어떤 형태로 설정해야 하는지 궁금합니다.

예를 들어, charset을 utf8mb4로 설정한 후 mysql_query 함수를 사용할 때는 한글이 깨지지 않도록 하려면 어떻게 해야 하는지 알려주시면 감사하겠습니다.

아래는 예시 코드입니다.

php

$mysqli = new mysqli('localhost', 'username', 'password', 'database');

$mysqli->set_charset('utf8mb4'); // charset을 설정

$query = "SELECT * FROM 테이블명 WHERE 컬럼명 LIKE '%한글%'"; // 한글이 포함된 쿼리

$result = $mysqli->query($query); // 한글이 깨질 수 있는 쿼리



위 코드에서 한글이 깨지지 않도록 하려면 어떻게 해야 하는지 알려주시면 감사하겠습니다.

    댓글목록

    profile_image
    나우호스팅  13일 전



    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

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 5,316건 / 229 페이지

검색

게시물 검색