PHP 대화형 mysql은 작은 따옴표, 큰 따옴표 및 백슬래시와 같은 일부 문자가 SQL 문에서 특별한 의미를 갖기 때문에 이스케이프되어야 합니다. SQL 주입 공격, 공격자가 데이터 삭제, 기밀 정보 획득 등 애플리케이션의 동작을 변경하기 위해 악성 SQL 코드를 실행하는 것을 방지합니다.
이 튜토리얼의 운영 체제: Windows 10 시스템, php8.1.3 버전, Dell G3 컴퓨터.
PHP를 사용하여 MySQL과 상호 작용할 때 일부 문자는 SQL 문에서 특별한 의미를 갖습니다. 이러한 문자가 오해되는 것을 방지하려면 이스케이프 처리해야 합니다.
일반적으로 이스케이프해야 하는 문자에는 작은따옴표('), 큰따옴표(") 및 백슬래시()가 포함됩니다.
예를 들어 PHP 코드에서는 MYSQLI 확장을 통해 MySQL 데이터베이스에 연결합니다.
```php $name = "John O'Connor"; $age = 25; mysqli_query($conn, "INSERT INTO users(name, age) VALUES('$name', '$age')"); ```
$name 변수에 작은따옴표가 포함되어 있으면 SQL 문 실행 오류가 발생합니다. 이러한 상황을 방지하려면 mysqli_real_escape_string() 함수를 사용하여 데이터를 이스케이프할 수 있습니다.
```php $name = "John O'Connor"; $age = 25; $name = mysqli_real_escape_string($conn, $name); mysqli_query($conn, "INSERT INTO users(name, age) VALUES('$name', '$age')"); ```
이 함수는 자동으로 이제 변수 $name에 작은따옴표가 포함되어 있어도 SQL 문 실행 오류가 발생하지 않습니다.
SQL 주입 공격을 피할 수 있다는 이점이 있습니다. 사용자 입력 이스케이프의 취약점으로 인해 공격자는 악성 SQL 코드를 실행하여 데이터 삭제, 기밀 정보 획득 등과 같은 애플리케이션의 동작을 변경할 수 있습니다. 이스케이프를 사용하면 이 공격을 방지하는 데 도움이 될 수 있습니다. 도구 및 프로그래밍 언어인 mysqli_real_escape_string() 함수가 예로 제공됩니다.
<?php // 建立数据库连接 $conn = mysqli_connect("localhost", "username", "password", "database"); // 检查连接是否成功 if (!$conn) { die("Connection failed: " . mysqli_connect_error()); } // 要转义的字符串 $string_to_escape = "It's a beautiful day!"; // 对字符串进行转义 $escaped_string = mysqli_real_escape_string($conn, $string_to_escape); // 输出未转义的字符串和转义后的字符串 echo "Original string: " . $string_to_escape . "<br>"; echo "Escaped string: " . $escaped_string; // 关闭数据库连接 mysqli_close($conn); ?>위의 예에서는 먼저 MySQL 데이터베이스에 대한 연결을 설정한 다음 이스케이프할 문자열을 선언합니다. mysqli_real_escape_string() 함수. 마지막으로 원본 문자열과 이스케이프된 문자열을 출력하고 데이터베이스 연결을 닫습니다. mysqli_real_escape_string() 함수를 사용할 때 첫 번째 인수로 MySQL 연결 개체를 전달해야 합니다. 왜냐하면 함수가 올바르게 이스케이프하려면 어떤 MySQL 서버가 사용되고 있는지 알아야 하기 때문입니다
.
위 내용은 PHP가 mysql과 상호작용하려면 이스케이프해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!