download
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
892
On Slideshare
892
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
0
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. IBM DB2 데이터베이스 연동을 위한 PHP 웹 프로그래밍 S T S S 팀 박 준 호 목 차 1. 필요한 소프트웨어
  • 2. 2. 환경 설정을 위한 제품의 설치 2-1. ALZZA Linux V6.1 설치 2-2. qt V2.1 설치 2-3. IBM DB2 의 설치 2-4. unixODBC 의 설치 2-5. php 와 apache 웹 서버의 설치 3. PHP 내의 ODBC 설정 확인 4. IBM DB2 를 연동하여 ODBC 를 통한 PHP 웹 프로그램의 예제 5. PHP 입문 1. 필요한 소프트웨어 1) ALZZA Linux V6.1 ( Korn Shell 모듈을 설치해야 한다.) 2) Linux 용 DB2 V7.1 (“DB2 UDB 21 일 완성” 책자에 포함된 CD 내의 Linux 용 DB2 V6.1 에는 DB2 PTF 2 번이 들어있다. 이 버전을 사용하여 php 웹 연동을 구현할 수도 있다.) 3) qt V2.1 4) unixODBC v1.8.9 5) php v 4 beta3 2. 환경 설정을 위한 제품의 설치 2- 1. ALZZA Linux V6.1 설치 ALZZA Linux V6.1 을 설치한다. Linux 설치시 사용자 설치로 설치하며, 이 때 개별 모 듈을 선택하여 설치할 수 있도록 하여 System Shell Environment 에서 Korn Shell 모듈 을 선택하여 설치한다. 2- 2. qt V2.1 설치 이 프로그램은 ODBC Manager 의 GUI 환경을 위해 미리 설치되어야 하는 프로그램이 2
  • 3. 다. 1) 다음과 같은 웹 도메인에서 qt V2.1 을 다운 로드한다 (http://www.trolltech.com/products/download/freelicense/qtfree-dl.html). 이 때 다 운로드되는 qt V2.1 압축 파일 명은 다음과 같다. qt-x11-2_1_1_tar.tar 2) 이 파일을 다음 명령을 통해 /usr/local 디렉토리에 복사한 다음, 그 파일의 압축을 해제 한다. mv qt-x11-2_1_1_tar.tar qt-x11-2.1.1.tar.gz tar xvfz qt-x11-2.1.1.tar.gz /usr/local/qt-2.0.2 디렉토리에 압축파일로부터 파일들을 해제할 것이다. 3) 다음과 같이 /usr/local/qt-2.0.2 디렉토리를 /usr/local/qt 디렉토리로 재명명한다. mv qt-2.0.2 qt 4) 현재 로그인 사용자는 root 이고 KDE 세션을 사용하고 있다면, root 사용자의 /root/.bash_profile 에 다음의 환경변수를 설정한 다음, 다시 root 사용자로 KDE 세션을 사용하여 로그인한다. QTDIR - Qt 의 설치 디렉토리 PATH - moc 프로그램의 위치 MANPATH - Qt man 페이지의 위치 LD_LIBRARY_PATH - 공유 Qt 라이브러리의 위치 QTDIR=/usr/local/qt 만약 GNU g++을 사용한다면, 다음의 환경변수도 설정해야 한다. PATH=$QTDIR/bin:$PATH if [ $MANPATH ] then LIBRARY_PATH - 라이브러리 파일 경로 MANPATH=$QTDIR/man:$MANPATH 파일 경로 CPLUS_INCLUDE_PATH - C++ include else MANPATH=$QTDIR/man fi 즉 다음과 같이 설정한다. if [ $LD_LIBRARY_PATH ] then LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH else LD_LIBRARY_PATH=$QTDIR/lib fi LIBRARY_PATH=$LD_LIBRARY_PATH if [ $CPLUS_INCLUDE_PATH ] then CPLUS_INCLUDE_PATH=$QTDIR/include:$CPLUS_INCLUDE_PATH else CPLUS_INCLUDE_PATH=$QTDIR/include fi export QTDIR PATH MANPATH LD_LIBRARY_PATH LIBRARY_PATH export CPLUS_INCLUDE_PATH 3
  • 4. 5) 다음 명령을 통해 해당 기계에 맞는 Qt 라이브러리를 구성한다. ./configure 6) 다음 명령을 통해 라이브러리 생성하고 컴파일한다. make 7) 'libqt.so.1' 라이브러리를 로드할 수 없다는 메시지가 나타난다면, 다음 명령을 수행한다. /sbin/ldconfig 2- 3. IB M DB 2 의 설치 1) IBM DB2 v7.1 CD 를 CD-ROM 드라이브에 넣은 다음, 다음 명령으로 CD-ROM 드라이 브를 마운트한다. mount /mnt/cdrom 2) 마운트된 CD-ROM 드라이브 디렉토리로 이동하여 DB2 설치 프로그램을 실행한다. cd /mnt/cdrom ./db2setup 3) DB2 제품을 설치하고 DB2 인스턴스와 DB2 관리 서버를 구성하는 작업을 수행하려면 다 음과 같은 매개변수 값들이 필요하다. 이 값들은 DB2에서 디폴트값으로 제공한다. 구 분 DB2 설치시 필요한 정보 기본값 4
  • 5. 사용자명(User Name) db2inst1 UID 시스템 생성 UID 그룹명(Group Name) db2iadm1 GID 시스템 생성 GID 암호 Ibmdb2 TCP/IP 서비스 명 db2cdb2inst1 DB2 인스턴스 TCP/IP 포트번호 50001 IPX/SPX 소켓번호 879E 사용자명(UDF) db2fenc1 UID(UDF) 시스템 생성 UID 그룹명(UDF) db2fadm1 GID(UDF) 시스템 생성 GID 암호(UDF) Ibmdb2 사용자명(DAS) db2as DB2 관리 인스턴스 UID(DAS) 시스템 생성 UID 그룹명(DAS) db2asgrp GID(DAS) 시스템 생성 GID 관리 서버 암호(DAS) Ibmdb2 TCP/IP 포트번호(DAS) 523 TCP/IP 소켓명(DAS) 87A2 4)다음과 같은 DB2 V6 설치 화면의 제품 목록에서 설치할 제품을 선택한다. 설치될 제품의 옵션(Customize…)을 변경하려면 탭 키를 이용하여 (Customize…)를 선택 하고 Enter 키를 누른다. 5) 다음과 같은 화면에서 설치될 제품의 옵션을 선택한 다음, “OK” 버튼을 누른다. 5
  • 6. 6)3세대 언어로 프로그램 개발을 원한다면, 다음과 같은 제품을 선택하여 설치해야 한다. 7) 마찬가지로 다음과 같은 화면에서 설치될 제품의 옵션을 선택한 다음, “OK” 버튼을 누 른다. 6
  • 7. 8) 그 다음 화면에서 다시 한번“OK”버튼을 누른다. 9) 다음 화면에서 인스턴스를 생성하기 위해 “Create a DB2 Instance”를 선택한다. 7
  • 8. 10)인스턴스 생성을 위한 사용자 명 및 암호를 입력한다. 11) 인스턴스 생성을 위한 Fence 사용자 명 및 암호를 입력한다. 8
  • 9. 12)그 다음 WareHouse Control Database 생성을 하지 않고, 필요하면 설치이후에 설치 할 수 있다. 13)그 다음 “Do not set up DB2 Distributed Join …”을 선택한다. 만약 “DB2 Distributed Join”을 필요하다면, DB2 서버 제품 설치이후에 설치할 수도 있다. 9
  • 10. 14)DB2 관리 서버 생성을 생성하기 위해 “Create the Administration Server”를 선택한다. 15)DB2 관리 서버 생성을 위한 DB2 관리 서버 사용자명 및 암호를 입력한 후 “OK” 버튼 을 선택한다. 10
  • 11. 16) 다음과 같이 파일 복사을 수행하며 복사가 끝나면 DB2 인스턴스와 DB2 관리 서버를 생성한 후 설치를 종료한다. 제품의 설치가 완료되면 리눅스(Linux)용 DB2는 /usr/IBMdb2/V7.1 디렉토리에 설치된다. 17)DB2 제품의 설치를 검증하려면 다음의 단계를 거치게 된다. 17-1) 관리 서버 사용자인 db2as로 로그인하여 다음의 명령을 수행한다. 11
  • 12. db2admin start db2admin stop 17-2) DB2 인스턴스 사용자인 db2inst1으로 로그인하여 다음과 같이 데이터베이스엔 진을 기동하고 샘플 테이터베이스를 작성한다. db2start db2sampl 17-3) 다음과 같이 SAMPLE 데이터베이스를 연결하여 모든 직원의 목록을 조회하여 봅니다. db2 connect to sample db2 select * from staff db2 connect reset 18) ODBC 설정을 위해 다음을 수행한다. cd /home/db2inst1/sqllib/lib ln -s libdb2.so.1 libodbc.so.1 ln -s libdb2.so.1 libodbcinst.so.1 만약 libodbcinst.so.1 이 존재한다면, 위의 ODBC 설정을 수행하지 않아도 된다. 2- 4. unixO DB C 의 설치 이 프로그램은 응용 프로그램과 DBMS 의 ODBC Drvier 의 인터페이스 역할을 하는 리 눅스용 ODBC Manager 프로그램이다. 1) 다음의 FTP Search( http://ftpsearch.lycos.com)에서 unixODBC 키워드로 탐색하여 / pub/linux/db/unixODBC-1_8_9_tar.tar 를 다운로드 한다. 2) 이 파일을 /usr/local 디렉토리로 복사한다. 그리고 다음 명령을 통해 압축을 해제한다. mv unixODBC-1_8_9_tar.tar unixODBC-1.8.9.tar.gz tar xvfz unixODBC-1.8.9.tar.gz 그러면 /usr/local/unixODBC-1.8.9 디렉토리에 압축파일로부터 파일들을 해제할 것이다. 12
  • 13. 3) /usr/local/unixODBC-1.8.9 디렉토리로 이동하여 unixODBC 를 다음 명령을 이용하여 설치한다. ./configure --prefix=/usr/local/unixODBC --sysconfdir=/etc 이 명령을 통해 unixODBC 는 /usr/local/unixODBC 디렉토리에 설치되고 system DSN 에 대한 환경 정의는 /etc 디렉토리에 위치한 odbc.ini 파일에 기술한다. make make install 4) system DSN 에 대한 환경 정의는 다음과 같습니다. /etc/odbc.ini 파일을 다음과 같이 편집한다. [SAMPLE] Description = IBM DB2 SAMPLE DB Driver = /home/db2inst1/sqllib/lib/libodbc.so.1 DBALIAS = SAMPLE /etc/odbcinst.ini 파일을 다음과 같이 편집한다. [ODBC] Trace = Yes Trace File = /tmp/sql.log [IBM] Description = IBM DB2 ODBC Driver Driver = /home/db2inst1/sqllib/lib/libodbc.so.1 Setup = /home/db2inst1/sqllib/lib/libodbcinst.so.1 File Usage = 1 5) 다음 명령을 수행하여 리눅스용 ODBC Manager 화면을 수행해 봅니다. /usr/local/unixODBC/DataManager 또는 /usr/local/unixODBC/ODBCConfig 2- 5. php 와 apache 웹 서버의 설치 IBM DB2 와 연결하기 위한 PHP 버전은 PHP4 베타 3 이상이어야 한다. 13
  • 14. 1) 다음의 FTP Search( http://ftpsearch.lycos.com)에서 apache_1.3.9.tar.gz 키워드로 탐색하여 /.2/Linux/slackware-7.0/source/n/apache/apache_1.3.9.tar.gz 를 다운로드 한다. 또한 FTP Search( http://ftpsearch.lycos.com)에서 php 키워드로 탐색하여 php-4.0b3.tar.gz 를 다운로드한다. 2) /usr/local 디렉토리로 apache_1.3.9.tar.gz, php-4.0b3.tar.gz 를 복사한 다음, 다음 명 령으로 이 파일들의 압축을 해제한다. mv php-4_0b3_tar.tar php-4.0b3.tar.gz tar xvfz php-4.0b3.tar.gz tar xvfz apache_1.3.9.tar.gz 압축을 해제하면 /usr/local/apache_1.3.9 와 /usr/local/php-4.0b3 디렉토리에 압축된 파일들을 해제한다. 3) /usr/local/apache_1.3.9 디렉토리에서 다음 명령을 수행한다. ./configure --prefix=/usr/local/apache 4) /usr/local/php-4.0b3 디렉토리에서 다음 명령을 수행한다. ./configure --with-ibm-db2=/home/db2inst1/sqllib --with-apache=/usr/local/apache_1.3.9 --enable-track-vars=yes make make install 5) /usr/local/apache_1.3.9 디렉토리에서 다음 명령을 수행한다. ./configure --prefix=/usr/local/apache --activate-module=src/modules/php4/libphp4.a make make install 6) /usr/local/apache/conf 디렉토리내의 httpd.conf 파일을 다음과 같이 수정하여 편집 한다. 14
  • 15. vi httpd.conf AddType application/x-httpd-php .php AddType application/x-httpd-php .html AddType application/x-httpd-php-source .phps 7) /usr/local/php-4.0b3 디렉토리내의 php.ini-dist 파일을 /usr/local/lib 디렉토리내 의 php.ini 파일로 복사한다. cp /usr/local/php-4.0b3/php.ini-dist /usr/local/lib/php.ini 8) /usr/local/lib 디렉토리내의 php.ini 파일을 다음과 같이 복사한다. vi php.ini magic_quotes_gpc = On magic_quotes_runtime = Off magic_quotes_sybase = On include_path = .:/usr/local/lib upload_tmp_dir = /tmp 9) /usr/local/apache/bin 디렉토리내의 apachectl 파일을 다음과 같이 편집 ,복사 및 링크한다. vi apachectl export DB2INSTANCE=db2inst1 export DB2CODEPAGE=970 export DB2PATH=/home/db2inst1 cp apachectl /etc/rc.d/init.d/ ln –s /etc/rc.d/init.d/apachectl /etc/rc.d/rc3.d/S85apachectl ln –s /etc/rc.d/init.d/apachectl /etc/rc.d/rc5.d/S85apachectl ln –s /etc/rc.d/init.d/apachectl /etc/rc.d/rc0.d/K15apachectl ln –s /etc/rc.d/init.d/apachectl /etc/rc.d/rc1.d/K15apachectl ln –s /etc/rc.d/init.d/apachectl /etc/rc.d/rc2.d/K15apachectl ln –s /etc/rc.d/init.d/apachectl /etc/rc.d/rc6.d/K15apachectl 10) /usr/local/apache/bin 디렉토리내의 apachectl 을 다음과 같이 실행하여 apach 웹 서버를 시작한다. 15
  • 16. ./apachectl stop ./apachectl start 또는 ./apachectl restart 3. PHP 내의 ODB C 설정 확인 /usr/local/apache/htdocs 디렉토리내에 test.php 파일을 다음과 같이 편집한 다음, 웹 브 라우저의 URL 에 “http://dstsdb1/test.php”를 불러와서 PHP 내의 ODBC 설정을확인한 다. 여기서 dstsdb1 은 웹서버의 호스트 명입니다. vi odbc.php vi test.php <? <? $dsn="SAMPLE" ; // odbc.ini 파일에 정의됨 phpinfo() ; $user="db2inst1"; //DB2 데이터베이스 디폴트 사용자 ?> $password="db2inst1"; // DB2 데이터베이스 디폴트 사용자의 암호 $sql= "SELECT * FROM DB2INST1.ORG"; // 실행모드 if ($conn_id = odbc_connect("$dsn","$user","$password")){ 4. IBM"connected to DSN: ODBC 를 통한 PHP 웹 프로그램의 예제 echo DB2 를 연동하여 $dsn"; 마찬가지로 usr/local/apache/htdocs 디렉토리내에 odbc.php 파일을 다음과 같이 편집 if($result=odbc_do($conn_id, $sql)) { 한 다음, 웹 브라우저의 URL 에 “http://sf00/odbc.php”를 불러와서 PHP 내의 IBM DB2 데이터베이스의 자료를 '$sql'"; echo "executing 조회한다. 여기서 sf00 는 웹 서버의 호스트 명입니다. echo "Results: "; odbc_result_all($result); echo "freeing result"; odbc_free_result($result); }else{ echo "can not execute '$sql' "; } echo "closing connection $conn_id"; odbc_close($conn_id); }else{ echo "can not connect to DSN: $dsn "; } ?> 16
  • 17. 필요하다면, 다음의 설정을 odbc.php 에 추가할 수 있다. putenv("LD_LIBRARY_PATH=/usr/local/openlink/odbcsdk/lib"); putenv("ODBCINSTINI=/usr/local/openlink/odbcinst.ini"); putenv("ODBCINI=/usr/local/openlink/odbc.ini"); 웹 브라우저에서 odbc.php 를 수행하면 다음과 같은 결과를 볼 수 있다. 17
  • 18. 5. PHP 입문 5- 1. PHP 스크립트 문서 PHP 스크립트 문서는 다음과 같다. <html> <head> <title>Hello PHP</title> <body> <?php /*여기는 PHP 스크립트 부분이다. */ echo (“여기는… <font size=7>PHP4 스크립트 문서</font>이다. n”); ?> </body> </html> 5- 2. PHP 에서의 변수형 PHP 에서의 변수형에는 정수형(integer), 실수형(double), 문자열(string),배열(array) 및 객체(object)가 있다. PHP 변수의 유형은 그 변수의 값에 따라 유동적으로 바꿀 수 있 다. 예를 들면 다음과 같다. <html> <body> <? $var_a=200; echo(“var_a : $var_a <br>”) ; var_a = “안녕” echo(“var_a : $var_a “) ; ?> </body> </html> 위에서 var_a 는 “200”이라는 값을 갖는 경우에는 정수형이지만, “안녕”이라는 문자열 값 을 가질 경우에는 문자열이 된다. 연관 배열의 예는 다음과 같다. $list = array (“김철수”=>”81”, “이영희”=>”90”) ; 18
  • 19. 또한, 객체(object)형 변수의 예를 살펴보면 다음과 같다. <? class Car { function testCar() { echo( “Call to testCar function !”) ; } } $sedan = new Car ; $sedan->testCar() ; ?> 입력된 값을 전달 받을 때에는 POST 방식과 GET 방식이 있다. POST 방식이란 폼을 통해 직접 입력 받는 것이고, GET 방식은 action = “formcgi.php?code=test&table=bbs” 와 같이 물음표(?) 뒤에 “변수 = 값”으로 URL 로 직접 전달하는 방식이다. PHP 에서는 이 러한 값들이 각각 $HTTP_POST_VARS 와 $HTTP_GET_VARS 에 저장된다. 예를 들면 다음과 같다. <html> <body> <form method =”post” action=“formcgi.php?code=test&table=bbs”> 이름을 입력하세요. : <input type =”text” name = “username”> <input type = “submit” value=”전송”> </form> </body> </html> <? formcgi.php 는 다음과 같다. class Account { var $current_money ; <? function save($money) { echo (“당신의 이름은<b>$username</b> 입니다.<p>”) ; ?> $this->current_money += $money ; } function withdraw($money) { account 클래스에 대한 정의는 다음과 같다. if( $this->current_money < $money) { echo (“잔액이 부족한다. “) ; return true ; } else { $this->current_money -= $money ; return true ; } } function getCurrent() { return $this->Current_money ; } } ?> 19
  • 20. 클래스 Account 에 대한 사용은 다음과 같습니다. $accnt = new Account(125000) ; $current = $accnt->getCurrent() ; //현재의 금액 $accnt->save(100) ; // 100 원 입금 $accnt->withdraw(700) ; //700 원 인출 5- 3. ODBC 함수 함수명 설 명 비 고 odbc_autocommit autocommit 특성을 반전시킨다. odbc_binmode 이진 컬럼 자료를 처리한다. odbc_close ODBC 연결을 끊는다. odbc_close_all 모든 ODBC 연결을 끊는다. odbc_commit ODBC 트랜잭션을 확약한다. odbc_connect 데이터 소스에 연결한다. odbc_cursor 커서명을 얻는다. odbc_do odbc_exex()의 동의어 odbc_exec SQL 문을 준비 및 실행한다. odbc_execute 준비된 SQL 문을 실행한다. odbc_fetch_into 한 행을 배열에 저장한다. odbc_fetch_row 한 행을 조회한다. odbc_field_name 컬럼명을 조회한다. odbc_field_num 컬럼번호를 반환한다. odbc_field_type 필드의 자료 유형 odbc_field_len 한 필드의 길이를 반환한다. odbc_field_precision odbc_field_len()의 동의어 odbc_field_scale 한 필드의 스케일(scale)을 반환한다. odbc_free_result 결과와 관련된 자원을 풀어준다. odbc_longreadlen Long 컬럼을 처리한다. odbc_num_fields 결과값의 컬럼 수 odbc_pconnect 영구적인 데이터베이스 연결 odbc_prepare 실행문의 수행준비 odbc_num_rows 결과값의 행 수 odbc_result 결과값을 반환한다. odbc_result_all HTML 테이블로 결과값을 반환한다. odbc_rollback 트랜잭션을 취소한다. odbc_setoption ODBC 설정을 조정한다. odbc_tables 특정 데이터 소스에 저장된 테이블명 리스트를 반환한다. 20
  • 21. odbc_tableprivileges 테이블 리스트 및 그 테이블에 관한 권한을 보 여준다. odbc_columns 특정 테이블의 컬럼명 리스트를 보여준다. odbc_columnprivileges 컬럼명 리스트와 그와 관련된 권한을 보여준 다. odbc_gettypeinfo 데이터 소스내의 데이터 유형에 대한 정보를 반환하다. odbc_primarykeys 테이블의 기본키에 포함되는 컬럼명을 반환한 다. odbc_foreignkeys 테이블의 기본키와 관련된 외부키 리스트를 보여준다. odbc_procedures 특정 데이터 소스에 저장된 프로시저 리스트를 보여준다. odbc_procedurecolumn 프로시저에 대한 매개변수에 대한 정보를 보여 s 준다. odbc_specialcolumns 테이블내의 유일한 값을 반환하는 컬럼 리스트 또는 트랜잭션에 의해 갱신될 경우 자동 갱신되 는 컬럼 리스트를 보여준다. odbc_statistics 테이블의 통계정보를 보여준다. 21