메뉴 건너뛰기

XEDITION

MYSQL

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

번호 제목 글쓴이 날짜 조회 수
55 MySQL 데이터 복구하기 엘리후 2016.10.06 85
54 플래시로 DB테이블 연동 기초~ 엘리후 2016.09.07 62
53 [문제해결 일지] systemctl start mariadb 실행시 Failed to issue method call: No such file or directory. 에러 엘리후 2016.05.10 83
52 알기 쉬운 게임DB 이야기 엘리후 2016.02.28 248
51 mysql 이벤트 스케줄 사용법 엘리후 2016.02.20 1866
50 MySql 문자열 합치기 엘리후 2016.02.19 239
49 MySQL Insert Where query 엘리후 2016.02.19 171
48 [MySQL]이벤트 스케줄러를 사용해서 데이터 삭제하기 엘리후 2016.02.02 215
47 mysql 이벤트 스케쥴러 사용하기 엘리후 2016.02.02 85
46 SQL FULL OUTER JOIN Keyword 엘리후 2016.01.28 132
» mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead… 엘리후 2015.12.01 67
44 mysql 명령어로 접속시도시 발생되는 오류 엘리후 2015.12.01 328
43 MYSQL: AND & OR CONDITIONS 엘리후 2015.11.26 32
42 [MY-SQL] 현재(오늘)부터 특정일 까지를 구하는 Query문(between, subdate) + 오늘 기준 이번주, 이번달 구하는 Query문 엘리후 2015.11.20 201
41 mysql에서 가장 오래된 row select 쿼리는? 엘리후 2015.11.19 158
40 MySQL 함수를 활용한 날짜비교 쿼리문 작성하기 [출처] MySQL 함수를 활용한 날짜비교 쿼리문 작성하기|작성자 네오 에이치 엘리후 2015.11.18 60
39 MySQL 기본쿼리 : DELETE 문 엘리후 2015.11.02 45
38 [서버관리] phpMyAdmin을 통한 DB 및 사용자추가 엘리후 2015.10.28 116
37 Ubuntu MySQL 원격 접속 허용 엘리후 2015.10.22 56
36 [mysql] mysql 중복 제거 쿼리 (dist, group by) 엘리후 2015.10.21 137
위로