본문 바로가기

php

CodeIgniter PHP MYSQL ... 그리고 Stored Procedure[펌]

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