>  기사  >  백엔드 개발  >  PHP 치명적인 오류에 대한 해결 방법: 정의되지 않은 함수 mysql_real_escape_string() 호출

PHP 치명적인 오류에 대한 해결 방법: 정의되지 않은 함수 mysql_real_escape_string() 호출

王林
王林원래의
2023-06-22 12:37:051381검색

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.