PHP는 웹 개발에 널리 사용되는 오픈 소스 스크립팅 언어입니다. 그러나 개발자는 웹 개발에 PHP를 사용할 때 다양한 오류와 문제에 직면하는 경우가 많습니다. 그 중 흔한 문제는 "PHP 치명적인 오류: 정의되지 않은 함수 mysql_real_escape_string() 호출"입니다.
이 기사에서는 이 오류의 원인과 해결 방법에 대해 설명합니다.
이유:
MySQLi 확장은 버전 5.5 이후 PHP의 MySQL 확장을 대체한 더욱 강력한 데이터베이스 확장입니다. MySQLi 확장을 사용할 때 mysql_real_escape_string() 함수를 사용하면 다음 오류가 발생합니다:
PHP Fatal error: Call to undefine function mysql_real_escape_string()
이것은 mysql_real_escape_string() 함수가 MySQL 확장의 함수이기 때문입니다. . MySQLi 확장에는 포함되지 않습니다.
해결책:
1. 함수 바꾸기
이 문제를 해결하려면 먼저 mysql_real_escape_string() 함수를 mysqli_real_escape_string() 함수로 바꿔야 합니다. 왜냐하면 이 함수는 MySQLi 확장의 함수이기 때문입니다. 예:
$mysqli = new mysqli('localhost', 'username', 'password', 'database_name');
$name = mysqli_real_escape_string($mysqli, $_POST['name']);
$ email = mysqli_real_escape_string($mysqli, $_POST['email']);
이 방법은 비교적 간단하지만 코드 수정이 많이 필요하고 이미 구현된 프로젝트에는 적합하지 않습니다.
2. MySQL 호환 모드 사용
프로젝트에서 MySQL 호환 모드를 사용하는 경우 데이터베이스에 연결할 때 매개변수를 추가하여 MySQL 호환 모드를 활성화할 수 있습니다. 예:
$mysqli = new mysqli('localhost', 'username', 'password', 'database_name', NULL, '/path/to/mysql/socket', MYSQLI_CLIENT_COMPRESS | MYSQL_CLIENT_IGNORE_SPACE);
이 방법은 다음과 같습니다. 최신 버전의 PHP를 MySQL 호환 모드에서 실행하지만 다른 문제가 발생할 수 있습니다.
3. MySQL 확장 설치
프로젝트에서 mysql_real_escape_string() 함수를 사용해야 하는 경우 가장 좋은 방법은 MySQL 확장을 설치하는 것입니다. 이렇게 하려면 운영 체제를 조작하여 이전 MySQL 확장을 설치해야 합니다.
Ubuntu 및 Debian 시스템의 경우 다음 명령을 실행하여 확장 프로그램을 설치할 수 있습니다.
sudo apt-get install php5-mysql
RHEL 및 CentOS 시스템의 경우 다음 명령을 실행하여 확장 프로그램을 설치할 수 있습니다.
sudo yum install php-mysql
4. 프로젝트 업그레이드
프로젝트를 업그레이드할 때 mysql_real_escape_string() 함수를 PDO에서 제공하는 안전한 대안으로 바꾸는 것을 고려하세요. 예:
$dbh = new PDO('mysql:host=localhost;dbname=database_name', 'username', 'password');
$name = $dbh->quote($_POST['name') ] );
$email = $dbh->quote($_POST['email']);
위 방법은 높은 보안성을 제공할 수 있지만 PDO에 대한 완전한 이해가 필요하므로 추가적인 시간과 노력이 필요합니다.
요약:
PHP 치명적인 오류: 정의되지 않은 함수 mysql_real_escape_string() 호출은 일반적인 오류이지만 해결 방법은 여러 가지가 있습니다. 수정하기 전에 프로젝트에 사용된 데이터베이스 확장을 고려하고 모든 솔루션을 테스트하여 명백한 부작용이 없는지 확인해야 합니다.
위 내용은 PHP 치명적인 오류에 대한 해결 방법: 정의되지 않은 함수 mysql_real_escape_string() 호출의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!