mysqli :: charac 이 방법의 프로토 타입은 다음과 같습니다.
string mysqli::character_set_name ( void )
즉, SQL 작업을 수행하기 전에 호출하여 연결에서 사용하는 문자가 데이터베이스 구성과 일치하는지 확인합니다.
MySQL은 UTF8 , UTF8MB4 , LATIN1 등과 같은 여러 문자 세트를 지원합니다. 일관되지 않은 문자 세트는 다음과 같은 문제로 이어질 수 있습니다.
한자가 엉망이되거나 차단됩니다
다국어 컨텐츠가 포함 된 쿼리를 올바르게 실행할 수 없습니다
데이터가 데이터베이스에 기록되어 다시 읽은 후에 예외가 발생했습니다.
특히 MySQL의 기본 문자 세트가 PHP에서 사용하는 문자 세트와 일치하지 않을 때 문제가 특히 일반적입니다. 따라서 연결이 설정된 후 시간에 설정된 문자를 확인하는 것이 좋습니다.
다음은 현재 연결된 문자 세트 설정을 감지하고 확인하기위한 완전한 예입니다.
<?php
$mysqli = new mysqli("localhost", "user", "password", "database");
// 연결이 성공했는지 확인하십시오
if ($mysqli->connect_errno) {
die("연결이 실패했습니다: " . $mysqli->connect_error);
}
// 현재 연결된 문자 세트를 얻으십시오
$currentCharset = $mysqli->character_set_name();
echo "현재 연결에 사용 된 문자 세트는 다음과 같습니다: " . $currentCharset;
// 예상 문자 세트인지 확인하십시오,예를 들어 utf8mb4
if ($currentCharset !== 'utf8mb4') {
echo "캐릭터 세트는 일관성이 없습니다,설정으로 utf8mb4...";
if (!$mysqli->set_charset("utf8mb4")) {
die("문자 세트를 설정하지 못했습니다: " . $mysqli->error);
}
echo "문자 세트가 업데이트되었습니다: " . $mysqli->character_set_name();
}
?>
이 예제가 데이터베이스에 연결된 후 먼저 현재 사용되는 문자 세트를 출력합니다. UTF8MB4 가 아닌 경우 문자 세트를 재설정하십시오. mysqli :: set_charset 및 mysqli :: charac
PHP에서 사용하는 문자 세트가 서버 측의 기본 문자 세트와 정확히 동일한 지 확인하려면 MySQL의 구성 파일 (일반적으로 my.cnf 또는 my.ini )에서 기본 설정을 읽는 것을 고려하십시오.
예를 들어 다음 SQL 쿼리를 사용하여 서버 측 기본 문자 세트 설정을 볼 수 있습니다.
<?php
$result = $mysqli->query("SHOW VARIABLES LIKE 'character_set_server'");
$row = $result->fetch_assoc();
$serverCharset = $row['Value'];
echo "MySQL서버의 기본 문자 세트는 다음과 같습니다: " . $serverCharset;
if ($mysqli->character_set_name() !== $serverCharset) {
echo "检测到캐릭터 세트는 일관성이 없습니다,동기화하려고합니다...";
if (!$mysqli->set_charset($serverCharset)) {
die("문자 세트를 설정하지 못했습니다: " . $mysqli->error);
}
echo "문자 세트는 동기화되었습니다: " . $mysqli->character_set_name();
}
?>
이 코드는 현재 연결된 문자 세트를 확인할뿐만 아니라 서버의 기본 문자 세트와 비교하여 문자 세트 설정을 자동으로 동기화하여 데이터 일관성을 추가로 확인합니다.