PHP는 주로 웹 개발에 사용되는 인기 있는 오픈 소스 스크립팅 언어입니다. 개발을 위해 PHP를 사용할 때, 특히 중국어 데이터를 데이터베이스에 삽입할 때 중국어 문자가 왜곡되는 문제에 직면할 수 있습니다. 이 기사에서는 PHP에서 이러한 상황을 방지하는 방법을 소개합니다.
데이터베이스에 연결할 때 데이터베이스 문자 집합을 PHP 스크립트의 문자 집합과 일치하도록 설정해야 합니다. 그렇지 않으면 중국어 정보를 삽입할 때 잘못된 문자가 나타납니다. 데이터베이스에 연결할 때 다음 코드를 추가합니다.
$con=mysqli_connect("localhost","my_user","my_password","my_db"); mysqli_query($con,"SET NAMES utf8");
UTF-8은 유니코드 문자 집합을 지원하는 멀티바이트 인코딩입니다. UTF-8 인코딩을 사용하면 데이터베이스에 중국어가 포함된 데이터를 올바르게 삽입할 수 있습니다. 다음 방법으로 PHP 파일이 UTF-8로 인코딩되었는지 확인할 수 있습니다.
$encoding = mb_detect_encoding($str, "UTF-8,GBK,GB2312,BIG5");
반환된 $encoding이 "UTF-8"이면 PHP 파일이 UTF-8로 인코딩된 것입니다.
SQL 문을 실행할 때 데이터베이스의 데이터 보안을 보장하려면 문자열을 SQL 안전 문자열로 변환하는 함수를 사용해야 합니다. PHP는 문자열을 이스케이프하는 함수인 mysqli_real_escape_string()을 제공합니다. 새 데이터를 삽입하기 전에 문자열을 이스케이프하면 됩니다.
$name=mysqli_real_escape_string($con,$_POST['name']); $sql="INSERT INTO TABLE_NAME(name) VALUES('$name')"; mysqli_query($con,$sql);
PDO는 다양한 데이터베이스를 지원할 수 있는 PHP 데이터베이스 추상화 계층입니다. PDO를 사용할 때 데이터베이스 연결에 대한 문자 인코딩을 설정하고 PDO::quote() 함수를 사용하여 이스케이프할 수 있습니다.
$dsn = "mysql:host=localhost;dbname=myDatabase;charset=utf8"; $username = "username"; $password = "password"; $options = array( PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8", ); try { $pdo = new PDO($dsn, $username, $password, $options); $name = $pdo->quote($_POST['name']); $sql = "INSERT INTO TABLE_NAME(name) VALUES($name)"; $pdo->exec($sql); } catch (PDOException $e) { echo "Error: " . $e->getMessage(); die(); }
PHP 삽입을 사용할 때 중국어 문자가 깨지는 문제가 발생하면 위의 방법을 통해 해결할 수 있습니다. 올바른 문자 인코딩 설정, 문자열 이스케이프 및 PDO 사용을 통해 언제든지 중국어 데이터를 데이터베이스에 성공적으로 삽입할 수 있습니다.
위 내용은 PHP에서 데이터베이스에 데이터를 삽입할 때 중국어 문자가 깨지는 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!