PHP를 사용하여 데이터베이스에 데이터를 삽입할 때 가끔 잘못된 문자가 나타날 수 있습니다. 이는 데이터 전송 중에 문자 세트가 일치하지 않기 때문입니다. 이 기사에서는 PHP에서 데이터베이스에 문자가 삽입되는 문제를 해결하는 방법을 소개합니다.
1. 데이터베이스 문자 집합 확인
문제 해결을 시작하기 전에 먼저 데이터베이스 문자 집합을 확인해야 합니다. 다음 명령을 사용하여 현재 데이터베이스의 문자 집합을 볼 수 있습니다.
SHOW VARIABLES LIKE 'character_set_database';
데이터베이스 문자 집합이 UTF-8이 아닌 경우 데이터를 삽입하고 읽을 수 있도록 UTF-8로 수정해야 합니다. 바르게. 다음 명령을 사용하여 데이터베이스 문자 집합을 UTF-8로 수정할 수 있습니다:
ALTER DATABASE database_name CHARACTER SET utf8 COLLATE utf8_general_ci;
2. PHP 파일 인코딩 형식을 설정합니다.
PHP 파일 상단의 인코딩 형식을 UTF-8로 설정하여 PHP의 문자열이 정확합니다. 데이터베이스에 삽입하세요. 다음 코드를 사용하여 PHP 인코딩 형식을 설정할 수 있습니다.
header('Content-Type: text/html; charset=UTF-8');
3. mysqli 인코딩 형식 설정
PHP에서 mysqli 확장을 사용하여 데이터를 삽입할 때 mysqli 인코딩 형식을 설정해야 합니다. 다음 코드를 사용하여 mysqli 인코딩 형식을 설정할 수 있습니다.
$mysqli = new mysqli("localhost", "username", "password", "database_name"); $mysqli -> set_charset("utf8");
4. htmlspecialchars 함수를 사용합니다.
데이터를 삽입하기 전에 PHP 내장 함수 htmlspecialchars를 사용하여 삽입해야 하는 문자열을 이스케이프합니다. 이렇게 하면 특수 문자가 데이터베이스에 영향을 미치는 것을 방지할 수 있습니다. 다음 코드를 사용하여 문자열을 이스케이프할 수 있습니다.
$str = htmlspecialchars($str, ENT_QUOTES, 'UTF-8');
5. 준비된 문 사용
준비된 문을 사용하면 SQL 삽입을 효과적으로 방지하고 문자가 깨지는 것을 방지할 수 있습니다. 준비된 문을 사용하여 데이터를 삽입하려면 다음 코드를 사용할 수 있습니다.
$stmt = $mysqli -> prepare("INSERT INTO table_name (column1, column2) VALUES (?, ?)"); $stmt -> bind_param("ss", $val1, $val2); $val1 = htmlspecialchars($val1, ENT_QUOTES, 'UTF-8'); $val2 = htmlspecialchars($val2, ENT_QUOTES, 'UTF-8'); $stmt -> execute();
6. PDO 사용
PDO를 사용하면 데이터베이스 작업을 보다 편리하게 처리하고 잘못된 문자를 효과적으로 방지할 수 있습니다. PDO를 사용하여 데이터를 삽입하려면 다음 코드를 사용할 수 있습니다.
$conn = new PDO("mysql:host=localhost;dbname=database_name;charset=utf8", "username", "password"); $stmt = $conn -> prepare("INSERT INTO table_name (column1, column2) VALUES (?, ?)"); $stmt -> execute([$val1, $val2]);
7. 요약
PHP를 사용하여 데이터베이스에 삽입할 때 잘못된 코드 문제가 발생하는 것은 매우 일반적입니다. 그러나 위의 단계를 따르면 문자 깨짐 문제를 쉽게 해결할 수 있습니다. 데이터베이스 작업을 수행하기 전에 먼저 데이터베이스 문자 집합이 올바른지 확인해야 합니다. 이는 문자 왜곡을 방지하는 중요한 단계입니다.
위 내용은 PHP 데이터베이스에 문자가 왜곡되어 삽입되는 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!