PHP를 사용하여 데이터베이스를 개발할 때 데이터를 삽입하기 위해 SQL 문을 사용해야 하는 경우가 많습니다. 그러나 가끔 데이터베이스에 중국어 데이터를 삽입할 때 잘못된 문자가 나타나는 경우가 있습니다. 이 기사에서는 이 문제를 해결하는 방법을 소개합니다.
먼저 데이터베이스가 어떻게 인코딩되는지 확인해야 합니다. MySQL에서는 다음 SQL 문을 통해 데이터베이스의 인코딩 방식을 확인할 수 있습니다.
SHOW VARIABLES LIKE 'character_set_database';
출력 결과가 utf8 또는 utf8mb4인 경우 데이터베이스의 기본 인코딩 방식은 UTF-8입니다. 출력 결과가 다른 인코딩인 경우 INSERT 문을 사용할 때 해당 문자 집합을 지정해야 합니다.
PHP에서는 다음 명령문을 사용하여 인코딩 방법을 설정할 수 있습니다.
mysqli_set_charset($mysqli, 'utf8');
여기서 $mysqli는 데이터베이스에 연결된 mysqli 개체입니다. 인코딩 방법을 UTF-8로 설정하면 중국어 데이터를 데이터베이스에 삽입할 때 잘못된 문자가 나타나지 않도록 할 수 있습니다.
위의 두 가지 방법으로 잘못된 문제를 해결할 수 없다면 INSERT 문에 문자 집합을 지정해야 합니다. 예:
INSERT INTO `table_name` (`column1`, `column2`, ...) VALUES (N'中文', 'English', ...)
SQL 문에서 N''을 사용하여 중국어 문자열을 유니코드 인코딩으로 변환하면 중국어 문자열이 왜곡되지 않도록 합니다.
마지막으로 SQL 삽입 공격을 방지하고 코드 재사용성을 높이려면 준비된 문을 사용하는 것이 좋습니다. 준비된 명령문은 mysqli 또는 PDO 개체를 통해 생성할 수 있으며 매개변수 설정 시 인코딩 방법을 지정할 수 있습니다. 예:
$stmt = $mysqli->prepare("INSERT INTO `table_name` (`column1`, `column2`, ...) VALUES (?, ?, ...)"); $stmt->bind_param("ss", $val1, $val2, ...); $stmt->execute();
이 예에서는 매개변수 설정을 위해 바인딩_param 메서드를 사용할 때 문자 집합을 'ss'로 설정합니다. 이는 매개변수가 문자열 유형이고 문자 세트가 UTF-8임을 의미합니다.
요약
이 문서에서는 데이터베이스 인코딩 확인, PHP 인코딩 방법 설정, SQL 문에 문자 집합 지정, 준비된 문 사용 등 PHP INSERT SQL에 중국어 왜곡 문자를 추가하는 문제를 해결하는 여러 가지 방법을 소개합니다. 개발 과정에서 실제 상황에 따라 적절한 방법을 선택하고 코딩 표준을 따라 코드의 가독성과 유지 관리성을 보장해야 합니다.
위 내용은 PHP 삽입으로 추가된 잘못된 중국어 데이터를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!