요구 조건 :
mysql server 4.1. 이상
libmysqlclient 버전 3306 이상
php-devel ( centos 나 redhat은 yum으로 깔끔하게 설치 가능)
방법 1
1) 기존 php-mysql은 대부분 함께 제공 되는 낮은버전의 libmysqlclient 를 쓰므로 최신 libmysqlclient로 다시 컴파일 하여 재설치( php-devel 필요)
2) 디비컨넥션 맻을시
mysql_connect(server, user, passward , false , 65536 );
해당 컨넥션에서 멀티 쿼리가 가능하다.
ex) $result = mysql_query( " select * from temp ; select * from temp2;");
단 이 경우는 php-mysql 에서 result_set 에 대한 메모리 처리를 안하므로 위와 같은 경우는
첫번째 쿼리의 result_Set에만 접근 가능하고 나머지 result_set은 메모리 누수 발생.....
그러므로
ex) $result = mysql_query("
insert something;
update something;"
);
등과 같이 result set이 없는 쿼리문만 사용 할 수 있음
방법 2
직접 php-mysql 확장을 수정 여타 result_set을 다룰 수 있는 모듈 작성
-- 멀티 result_set 지원은 따로 해줘야 할게 너무 많아서 GG
PS mysql 4.1 버전이상 innoDB를 사용 할 경우 transaction 도 사용할 수 있다.
$result = mysql_query("
start transaction ;
insert something ~~;
insert something2 ~~;
commit;
);
MYSQL PHP 꽁짜라고 우습게 볼게 아니더라...
관련 자료들
http://dev.mysql.com/doc/refman/4.1/en/c-api-multiple-queries.html mysql
http://kr2.php.net/manual/kr/zend.php php 확장 모듈 및 코어 확장 자료
2006년 8월 30일 수요일
php 4.X 버전에서 멀티 쿼리 쓰기
피드 구독하기:
댓글 (Atom)
댓글 없음:
댓글 쓰기