콘텐츠로 이동

1. PHP Interface#

이 장에서는 PHP에서 ODBC 함수를 이용하여 Altibase와 연동하는 방법을 설명한다.

Altibase PHP 모듈 참고 사항#

  • PHP에서 지원하는 데이터 타입은 다음과 같다.
    resource, int, bool, double, float, string, array, HashTable
  • Altibase 서버의 포트 번호와 Altibase에서 제공한 샘플 프로그램의 db.php에서 포트 번호를 맞춰야 한다.


PHP 연동을 위한 ODBC 매니저 설치#

PHP로 Altibase에 연동을 하기 위해서는 먼저 ODBC 매니저를 설치해야 한다. 이 절에서는 유닉스, 또는 리눅스에서 ODBC 매니저를 설치하고 사용환경을 설정하는 방법을 설명한다.

유닉스와 리눅스#

리눅스 또는 유닉스 환경에서 다음 절차대로 ODBC 매니저를 설치한다.

  1. unixODBC 다운로드한다.
    unixODBC 홈페이지에서 다운로드 할 수 있다.

  2. unixODBC 설치한다.
    다운로드한 unixODBC 소스 파일을 컴파일해야 한다. 컴파일된 라이브러리를 특정 위치에 설치하려면, configure할 때 -prefix 옵션으로 경로를 입력한다.

    ./configure -prefix=설치경로 -enable-gui=no --enable-drivers=no
    make
    make install
    
  3. unixODBC 환경을 설정한다.
    ODBCSYSINI 환경변수의 값을 Altibase 설치 계정의 홈 디렉터리 경로로 설정한다.

    export ODBCSYSINI=~
    
  4. unixODBC Driver Manager가 설치된 경로를 다음과 같이 환경변수에 추가한다. 라이브러리 경로를 설정하는 환경변수는 플랫폼과 운영체제의 bit에 따라서 LD_LIBRARY_PATH, LD_LIBRARY_PATH_64, SHLIB_PATH 중의 하나일 수 있다. 다음은 unixODBC를 /usr/local/odbcDriverManager32 또는 /usr/local/odbcDriverManager64에 설치한 예이다.

    export LD_LIBRARY_PATH= /usr/local/odbcDriverManager32/lib:$LD_LIBRARY_PATH
    export LD_LIBRARY_PATH_64= /usr/local/odbcDriverManager64/lib:$LD_LIBRARY_PATH_64
    
  5. ODBCSYSINI 환경변수의 경로에 다음 2개의 파일을 생성한다.

    odbc.ini  
    odbcinst.ini
    
  6. odbcinst.ini는 실제 내용이 없는 0 byte 파일이다.

  7. odbc.ini에는 DSN 이름 및 Altibase ODBC 드라이버 파일의 위치, 서버의 IP 주소, 접속 포트 번호를 아래처럼 설정한다.

    [Altibase]
    Driver = /home/altibase/altibase_home/lib/libaltibase_odbc.so
    Server = 127.0.0.1
    Port = 20300
    


ODBC 연결을 위한 PHP 함수#

Altibase는 표준 ODBC를 지원함으로써 PHP에서 이 ODBC 함수들을 사용하여 Altibase 서버와 연동할 수 있다.

PHP에서 사용하는 ODBC 함수들에 대한 자세한 설명은 아래의 PHP 공식 매뉴얼 사이트를 참조한다.

Sample Test#

<?
// SYSTEM DSN, USER_ID, USER_PASSWORD
$conn = odbc_connect("Altibase", "SYS", "MANAGER");

if ($conn)
{
    // direct-execution
    echo "now, i create table t1 (id integer, name char(20)<br>";
    odbc_exec($conn, "drop table t1");
    odbc_exec($conn, "create table t1 (id integer, name char(20))");

    // prepare-execution 
    echo "now, i insert into t1 value (100, Lee)<br>";
    $stmt = odbc_prepare ($conn, "insert into t1 values (?, ?)");
    $Insert = array (100, "Lee");
    if (!odbc_execute($stmt, &$Insert))
    {
        echo ("error");
    }

    // single-selection
    $res = odbc_do ($conn, "select id, name, sysdate from T1");
    odbc_fetch_row ($res);
    $ID = odbc_result($res, 1);
    $NAME = odbc_result($res, 2);
    $DATE = odbc_result($res, 3);
    echo ("id = $ID , name = $NAME datetime = $DATE <br>"); 
    odbc_close($conn);
}
?>