제목 | 다중(타)디비 컨넥 이용하기 (php클래스) | ||
---|---|---|---|
글쓴이 | ci세상 | 작성시각 | 2009/11/25 11:51:23 |
|
|||
개발하다보면 다른 여러 디비를 연결해 두고 작업할 일이 있는데요.. 단순히 컨넥만 시켜서는 순차적인 디비 처리밖에 못하지만 그놈의 클래스를 이용해서 처리하다보면 처리가 가능하다라는 점 ~~ php 개발시 참조하시면 됩니다. <핵심포인트> 1. codeigniter는 기본적으로 지원됩니다. http://codeigniter-kr.org/source/view/340 2. mysql_connect : TRUE인자 필수 동일한 인수로 mysql_connect()을 다시 호출하면, 새로운 link가 생성되는 것이 아니라, 이미 생성된 link 식별자 값을 돌려받게 된다. 단, new_link 로 mysql_connect()를 호출하면 동일한 인수로 mysql_connect()를 이미 호출하였다 하더라도 항상 새로운 접속을 생성한다. SQL 안전 모드에서는, 이 인수를 무시합니다. 3. mysql_query 시에 컨넥 필수 => 빠트리면 최종적인 디비컨넥을 참조하게 됩니다. <도움을 주신분> 우기파파, kirrie 님 <php일반코드> <? class mysql_driver { function mysql_driver($host,$name,$pass,$db) { $this->hostname = $host; $this->username = $name; $this->password = $pass; $this->database = $db; } function db_connect() { return @mysql_connect($this->hostname, $this->username, $this->password, TRUE); } function db_select() { return @mysql_select_db($this->database, $this->conn_id); } function initialize() { $this->conn_id = $this->db_connect(); $this->db_select(); } function query($sql) { // 이부분은 필요에 의해서 사용가능 return $this->result=mysql_query($sql,$this->conn_id); } } function &DB($host,$name,$pass,$db) { $driver = "mysql_driver"; $DB =& instantiate_class(new $driver($host,$name,$pass,$db)); $DB->initialize(); return $DB; } function instantiate_class($class){ return $class; } // 디비연결정보 $DB1 = DB('주소','아이디','패스워드','디비명'); $DB2 = DB('주소','아이디','패스워드','디비명'); // 순환출력 (db1, db2 교차테스트) $result1=$DB1->query("select * from board"); while($data1=mysql_fetch_array($result1)) { $result2=$DB2->query("select * from board2"); $data2 = mysql_fetch_array($result2); echo "$data1[title] => $data2[title]<br>"; } // 입력 $DB1->query("insert into board(id, pass) |
|||
다음글 | codeigniter+jquery ajax 검색+페이징 (1) | ||
이전글 | Controller롤 확장해서 profile 편하게 사... | ||
양승현
/
2009/11/25 11:59:50 /
추천
0
|
ci세상
/
2009/11/25 12:40:44 /
추천
0
다시 정리해서 올립니다.^^ ~~ 결국은 객체화 되어야 할것이
mysql_connect mysql_query 2개만 되면 되네요~~ 나머지는 그대로 사용하면 되구요 ~~ |
kirrie
/
2009/11/25 21:22:40 /
추천
0
좀 이상하죠? mysql_query는 인자를 두개 받는데 두번째 인자는 접속 리소스입니다. 생략도 가능하고, 생략할 경우에는 mysql_connect로 연 마지막 접속 리소스를 사용합니다.
문제는 두번째 접속 리소스 인자를 생략할 경우입니다. 이를테면 '전역적'으로 마지막 연결된 리소스를 사용한다는건데요, 일반적인 경우라면 상관없지만 단단히 캡슐화되어야 할 클래스의 인스턴스의 스쿠프를 무시하고 전체 스크립트의 마지막 연결을 사용한다는건 별로 직관적이지가 않네요. 버그는 아니지만, '당연히' 인스턴스화 된 클래스 내에서 사용된 mysql_query는 해당 인스턴스 내에서 연결된 접속 리소스를 사용해야 하는게 아닌지... 낮에 ci세상님과 이것에 대해 이야기하다가 그냥 이런 생각을 해봤습니다. |
테스트 해보려고 연결중 막혀서.. ㅋㅋ
점심들 맛나게 드세요!