CodeIgniter PHP MYSQL ... 그리고 Stored Procedure | | | php |
2012.07.19 11:14 |
제목이 구립니다.
PHP 에 관계된 글을 8년만에 올리는 군요... 즉 8년만에 PHP 를 만진다는 말입니다. PHP 마니 변했더근요..
언제나 그렇듯이 최강의 개발자!!!
아린상의 도움으로 알아낸 PHP - MySQL 프로시져(Procedure) 사용하기!!!
먼저 PHP 는 CI (codeIgniter 코드이그나이터) 기반을 이용합니다.
MySql 은 5.x 대의 최신 버전을 이용합니다.
그럼 먼저 MySQL 에서 프로시저를 만드는 것 부터 시작합시다
MS-SQL 만 줄창 이용하던 저는 Stored Procedure 찬양론자 이기 때문에...MySQL 에서도 이를 이용하고 싶었습니다.
약간의 차이점 말고는 SQL 구문은 별로 다르지 않습니다.
제가 대략 사용하는 프로시저의 기본 폼입니다.
자 프로시저를 만들었다면 PHP 에서 이용해야 하겠죠?
사용이야 뭐 쿼리스트링 대신에 프로시저를 넣기만 하면 그만입니다.
하. 지. 만...
프로시저를 두번 이상 쓰려고 하면 PHP 는 에러를 뿜어냅니다.
Error Number: 2014
Commands out of sync; you can’t run this command now
이런 썅노무... 저장프로시저를 한번 사용하면 다음엔 일반 쿼리도 사용 못합니다.
네이냔 에는 이런 내용은 눈씻고 찾아봐도 없고...
할수없이 부릅니다. 아린사마 도와주세요~~ 에러를 발견하면 잘빠진 암컷을 발견한듯 흥분하는 아린상...
끗끗내 암컷을 XX 하는 수컷노새처럼.. 에러를 찾아내 결국은 정복합니다...
문제는 Free_Result 부분에 있습니다.
먼저 드라이버를 mysql 드라이버에서 mysqli 드라이버로 변경합니다.
/application/config/database.php 에
$db['local']['hostname'] = 'localhost';
$db['local']['username'] = 'root';
$db['local']['password'] = 'apmsetup';
$db['local']['database'] = DB깡통이름;
$db['local']['dbdriver'] = 'mysqli'; <-------- 변경
$db['local']['dbprefix'] = '';
$db['local']['pconnect'] = FALSE;
$db['local']['db_debug'] = TRUE;
$db['local']['cache_on'] = FALSE;
$db['local']['cachedir'] = '';
$db['local']['char_set'] = 'utf8';
$db['local']['dbcollat'] = 'utf8_general_ci';
$db['local']['swap_pre'] = '';
$db['local']['autoinit'] = TRUE;
$db['local']['stricton'] = FALSE;
위와 같이 수정합니다.
그리고...
mysqli 드라이버의 result 에 관계된 파일을 수정합니다.
위치는
/system/database/drivers/mysqli/mysqli_result.php 입니다.
파일을 열어보면 아래와 같이 되어 있습니다.
이렇게 된 부분에
아래와 같이 끝까지 이동시킨 후 Free 시킵니다.
이제 당신은 PHP CodeIgniter MySQL 환경에서 저장프로시저를 맘대로 사용 할 수 있습니다.
아 참고로 CodeIgniter 가 아니어도 위와 같은 방법으로 수정하면 PHP MySQL 에서 프로시저를 사용할 수 있습니다.
저장 프로시져 사용 이유는 캡슐화, 성능향상, 캐쉬공유, 보안성 향상 함수처럼 만들어 갖다 쓰기 때문이다.
'php' 카테고리의 다른 글
php.ini 환경설정 (0) | 2012.12.26 |
---|---|
php 엑셀 변환시 한글깨짐 현상 (0) | 2012.12.06 |
[PHP5]생성자(Constructor)와 소멸자(Destructor) (0) | 2012.02.24 |
fsockopen urlencode (0) | 2012.02.21 |
PHP로 RSS를 간단히 만들기 (0) | 2011.03.07 |