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

PHP 치명적인 오류에 대한 해결 방법: 정의되지 않은 메소드 PDO::prepare() 호출

PHPz
PHPz원래의
2023-06-22 18:40:40995검색

PHP는 널리 사용되는 웹 개발 언어로 오랫동안 사용되어 왔습니다. PHP에 통합된 PDO(PHP 데이터 개체) 클래스는 웹 애플리케이션 개발 중에 데이터베이스와 상호 작용하는 일반적인 방법입니다. 그러나 일부 PHP 개발자가 자주 직면하는 문제는 PDO 클래스를 사용하여 데이터베이스와 상호 작용할 때 다음과 같은 오류가 발생한다는 것입니다.

PHP 치명적인 오류: 정의되지 않은 메서드 PDO::prepare() 호출

이 오류 메시지 이는 PDO::prepare() 메소드를 사용하고 있지만 PHP 엔진이 이 메소드를 찾을 수 없다는 의미입니다. 그렇다면 왜 이런 일이 발생합니까? 더 중요한 것은 이 문제를 어떻게 해결해야 하는가입니다.

먼저 PHP의 PDO 클래스와 몇 가지 기본 사용법을 이해해야 합니다. PDOException은 PDO 클래스의 하위 클래스이며 데이터베이스 작업 중에 발생할 수 있는 예외를 처리하는 데 사용됩니다. MySQL 데이터베이스에 쿼리 요청을 보낼 때 PDO::prepare() 메서드를 사용할 수 있습니다. 이 메서드는 쿼리 문을 MySQL 서버로 보냅니다. MySQL 서버는 쿼리 문을 실행 가능한 코드로 컴파일하고 준비된 문(PDOStatement 개체)을 반환합니다. 나중에 이 PHP 스크립트에서 이 명령문을 여러 번 사용하여 동일하거나 다른 쿼리 작업을 수행할 수 있습니다. PDO::prepare() 메소드의 기본 구문은 다음과 같습니다.

$stmt = $pdo->prepare($query);

여기서 $stmt는 PDOStatement 객체이고 $query는 MySQL 쿼리입니다. 실행하려는 명령문(특정 매개변수 및 값 대신 물음표 자리 표시자 사용)

그러나 경우에 따라 PDO::prepare() 메서드를 사용하려고 하면 "PHP Fatal error: Call to undefine method PDO::prepare() in" 오류가 나타납니다. 다음은 이 문제의 원인과 해결 방법에 대한 개요입니다.

  1. PHP 버전이 너무 오래되었습니다

먼저, PHP 버전이 PDO를 지원하는지 확인해야 합니다. PDO는 PHP 5.1 버전부터 도입되었으므로 최소한 PHP 버전 5.1 이상을 사용해야 합니다. 이전 버전의 PHP에서 PDO를 사용하면 정의되지 않은 메서드 오류가 발생합니다.

  1. 구성 파일에서 PDO가 활성화되어 있지 않습니다.

PHP 5.1 이상을 사용했더라도 PHP 구성 파일 php.ini에서 PDO 확장이 활성화되어 있는지 확인해야 합니다. 파일에 다음 줄이 있는지 간단히 확인할 수 있습니다.

extension=pdo.so
extension=pdo_mysql.so

이 줄이 없으면 파일에 추가하고 웹 서버를 다시 시작해야 합니다. 변경 사항이 적용되는지 확인하세요. php.ini 파일을 편집하는 방법을 잘 모르는 경우 터미널에 다음 명령을 입력할 수 있습니다.

sudo vi /etc/php.ini

그런 다음 vim 텍스트 편집기를 사용하여 PHP를 열 수 있습니다. ini 파일을 수정해 보세요. 파일을 저장하고 종료한 후 웹 서버를 다시 시작해야 합니다.

  1. PDO 클래스를 가져오지 않음

PHP 스크립트에서 PDO를 사용하기 전에 PDO 클래스를 가져왔는지 확인해야 합니다. PHP 스크립트 시작 부분에 다음 코드를 추가해야 합니다:

c9aeed4f24186a1d601e7cab897b1947

여기에서 $pdo는 PDO 객체, mydb, 사용자 이름 및 비밀번호는 MySQL 데이터베이스 연결과 관련된 세부 정보입니다. ATTR_ERRMODE와 같은 PDO 옵션을 사용하여 PDO 오류 보고 수준을 설정할 수도 있습니다.

  1. 잘못된 PDO 클래스 사용

PHP에서는 PDO 클래스를 구현하는 방법이 PDO와 PDO_MYSQL 두 가지가 있습니다. PDO_MYSQL을 사용하는 경우 PDO::prepare() 메서드 대신 PDO_MYSQL::prepare() 메서드를 사용해야 합니다.

다음은 PDO_MYSQL 클래스를 사용한 기본 쿼리 구문입니다.

$stmt = $pdo->prepare($query);

$pdo 변수는 PDO_MYSQL 클래스를 사용하여 생성된 객체라는 점에 유의하세요.

  1. MySQL PDO 확장 누락

마지막으로 PHP 스크립트가 MySQL 데이터베이스 서버를 사용하는 경우 MySQL PDO 확장이 PHP 서버에 설치되어 있는지 확인해야 합니다. 다음 명령을 사용하여 이 확장 기능이 설치되어 있는지 확인할 수 있습니다.

php -m | grep pdo_mysql

위 명령에서 "pdo_mysql"이 출력되면 pdo_mysql 확장 기능이 서버에 설치되었음을 의미합니다. 그렇지 않으면 이 확장을 서버에 설치해야 합니다.

마지막으로 php.ini 파일에서 pdo_mysql 확장을 활성화해야 합니다. 파일에 다음 줄을 추가하여 활성화할 수 있습니다:

extension=pdo_mysql.so

요약하자면, PHP Fatal error: Call to undefine method PDO::prepare()를 해결하는 방법은 문제의 근본 원인에 따라 다릅니다. 문제. 위와 같은 이유로 이 문제를 해결하는 방법은 여러 가지가 있습니다. 상황이 어떠하든, 우리는 상황을 주의 깊게 조사하고 몇 가지 가능한 해결책을 시도해야 합니다.

위 내용은 PHP 치명적인 오류에 대한 해결 방법: 정의되지 않은 메소드 PDO::prepare() 호출의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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