mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead…

php 5.5.x 버전을 사용하는 경우(XAMPP 1.8.x 이상 포함) 예전의 mysql 함수를 사용하면 에러가 발생한다. 예를 들어 mysql_connect()를 사용하면 아래와 같이 에러메시지가 표시된다.

mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead…

원인

php5.5 이상에서는 공식적으로 mysql_connect()와 같은 mysql 연결 함수들을 사용하지 않기로 하였다. 다면 이 버전에서는 제공은 하되 향후 버전에서는 제거하겠다는 것이다.

http://kr1.php.net/manual/en/function.mysql-connect.php 페이지에 가 보면 아래와 같은 경고 문구가 표시되어 있다.

Warning
This extension is deprecated as of PHP 5.5.0, and will be removed in the future. Instead, the MySQLi or PDO_MySQL extension should be used.

경고에 따르면 mysql_connect()는 php 5.5.0부터는 공식적으로 사용하지 않으며 앞으로 제거될 예정이므로 대신에 MySQLi나 PDO_MySQL 을 사용하라고 한다.

 

간단한 해결방법

가장 간단한 것은 이 버전에서 mysql_connect(), mysql_query와 같은 함수를 사용하면서 함수들 앞에 @를 붙이는 것이다. 함수들 앞에 @를 붙여 @mysql_connect()와 같이 사용하면 에러메시지를 표시하지 않는다. 아래와 같이 될 것이다.

또는 php.ini 설정 파일에서 error_reporting 부분을 찾아 아래와 같이 ^ E_DEPRECATED 를 추가해주는 것이다. 이것은 제거된(그러나 제공은 하는) 확장 또는 함수 등을 사용하면서 발생하는 에러메시지를 표시하지 않도록 해준다.

error_reporting = E_ALL ^ E_DEPRECATED

그러나 이 방법은 미래지향적인 해법은 아니다. 긴급히 문제를 해결하기 위한 방법일 뿐이다.

대신에 php 그룹에서 제안하는 대안인 MySQLi나 PDO_MySQL을 사용하는 것이 좋다.

물론 웹호스팅 등을 할 때 해당 서버의 php, mysql 버전을 확인해볼 필요는 있다. 너무 이전 버전이라면 새로운 확장이 제공되지 않을 수도 있기 때문이다.

 

PDO_MySQL

PDO_MySQL은 기존의 mysql_ 함수들에 비해 기능과 성능을 상당히 향상시켰다. 객체지향형 DB 연결및 활용이 가능하게 된 것이다.

간단히 이전 버전과 PDO 연결의 차이를 확인해보자.

 

세 줄에 거친 연결 설정이 PDO에서는 간단히 한 줄로 끝난다.

query문을 실행하고 결과를 표시하는 방법에서의 차이점도 예제를 통해서 알아보자.

바로 위의 PDO를 활용한 query는 아래와 같이 좀 더 간단해진다.

 

여기에 소개한 간단한 PDO 활용 팁은 아래 사이트를 참조하였다. 직접 방문하여 보다 많은 정보를 얻어보길 바란다.

http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers

http://php.net/manual/kr/ref.pdo-mysql.php

http://code.tutsplus.com/tutorials/why-you-should-be-using-phps-pdo-for-database-access–net-12059

개인적으로는 아래의 MySQLi보다는 PDO를 사용하는 편이 훨씬 더 생산성이나 효율성, 성능 면에서 이점이 많을 것으로 본다.

 

MySQLi 함수 사용

MySQLi는 기존의 mysql 함수들을 개선하였다. 전체적으로는 mysql_함수들과 비슷하지만 아래의 예제 코드를 참조하면 조금씩 바뀐 것을 할 수 있다.

이 MySQLi 코드 얘제는 w3school.com에서 참고하였다. 아래 링크를 따라가면 좀 더 많은 정보를 얻어보실 수 있다.

http://www.w3schools.com/php/php_ref_mysqli.asp

 

Share the joy
  •  
  •  
  •  
  •  

댓글 남기기