일반 특징

연결

데이터베이스 연결 : 데이터베이스 응용에서 첫 단계는 cubrid_connect() 함수 또는 cubrid_connect_with_url() 함수를 사용하는 것으로 데이터베이스 연결을 제공한다. cubrid_connect() 함수 또는 cubrid_connect_with_url() 함수가 성공적으로 수행되면, 데이터베이스를 사용할 수 있는 모든 함수를 사용할 수 있다. 응용을 완전히 끝내기 전에 cubrid_disconnect() 함수를 호출하는 것은 매우 중요하다. cubrid_disconnect() 함수는 현재 발생된 트랜잭션을 끝마치고 cubrid_connect() 함수에 의해 생성된 연결 핸들과 모든 요청 핸들을 종료한다.

트랜잭션과 자동 커밋

CUBRID PHP는 트랜잭션과 자동 커밋 모드를 지원한다. 자동 커밋 모드에서는 하나의 질의마다 하나의 트랜잭션이 이루어진다. cubrid_get_autocommit() 함수를 사용하면 현재 연결의 자동 커밋 모드 여부를 확인할 수 있다. cubrid_set_autocommit() 함수를 사용하면 현재 연결의 자동 커밋 모드 여부를 설정할 수 있으며, 진행 중이던 트랜잭션은 모드 설정과 상관없이 커밋된다.

응용 프로그램 시작 시 자동 커밋 모드의 기본값은 브로커 파라미터인 CCI_DEFAULT_AUTOCOMMIT으로 설정한다. 브로커 파라미터 설정을 생략하면 기본값은 ON이다. 다음 예와 같이 cubrid_connect_with_url() 함수를 사용해도 자동 커밋 모드 여부를 설정할 수 있다.

$con = cubrid_connect_with_url("cci:CUBRID:localhost:33000:demodb:dba::?autocommit=true");

cubrid_set_autocommit() 함수에서 자동 커밋 모드를 OFF로 설정하면 커밋 또는 롤백을 명시하여 트랜잭션을 처리할 수 있다. 트랜잭션을 커밋하려면 cubrid_commit() 함수를 사용하고 트랜잭션을 롤백하려면 cubrid_rollback() 함수를 사용한다. cubrid_disconnect() 함수는 트랜잭션을 종료하고 커밋되지 않은 작업을 롤백한다.

질의 처리

질의 실행

다음은 질의 실행을 위한 기본 단계이다.

  1. 연결 핸들 생성
  2. SQL 질의 요청에 대한 요청 핸들 생성
  3. 결과 가져오기
  4. 요청 핸들 종료

$con = cubrid_connect("192.168.0.10", 33000, "demodb");

if($con) {

    $req = cubrid_execute($con, "select * from code");

    if($req) {

        while ($row = cubrid_fetch($req)) {

            echo $row["s_name"];

            echo $row["f_name"];

        }

        cubrid_close_request($req);

    }

    cubrid_disconnect($con);

}

질의 결과의 열 타입과 이름

cubrid_column_types() 함수를 사용하여 열 타입이 들어있는 배열을 얻을 수 있고, cubrid_column_names() 함수를 사용하여 열의 이름이 들어있는 배열을 얻을 수 있다.

$req = cubrid_execute($con, "select host_year, host_city from olympic");

if($req) {

    $col_types = cubrid_column_types($req);

    $col_names = cubrid_column_names($req);

 

    while (list($key, $col_type) = each($col_types)) {

        echo $col_type;

    }

    while (list($key, $col_name) = each($col_names))

        echo $col_name;

    }

    cubrid_close_request($req);

}

커서 조정

질의 결과의 위치를 설정할 수 있다. cubrid_move_cursor() 함수를 사용하여 커서를 세 가지 포인트(질의 결과의 처음, 현재 커서 위치, 질의 결과의 끝) 중 한 포인트로부터 일정한 위치로 이동할 수 있다.

$req = cubrid_execute($con, "select host_year, host_city from olympic order by host_year");

if($req) {

    cubrid_move_cursor($req, 20, CUBRID_CURSOR_CURRENT)

    while ($row = cubrid_fetch($req, CUBRID_ASSOC)) {

        echo $row["host_year"].” “;

        echo $row["host_city"].”\n”;

    }

}

결과 배열 타입

cubrid_fetch() 함수의 결과에는 세가지 종류의 배열 타입 중 하나가 사용된다. cubrid_fetch() 함수가 호출될 때 배열의 타입을 결정할 수 있다. 그 중 하나인 연관배열은 문자열 색인을 사용한다. 두 번째로 수치배열은 숫자 순서 색인을 사용한다. 마지막 배열은 연관배열과 수치배열을 둘 다 포함한다.

카탈로그 연산

클래스, 가상 클래스, 속성, 메소드, 트리거, 제약 조건 등 데이터베이스의 스키마 정보는 cubrid_schema() 함수를 호출하여 얻을 수 있다. cubrid_schema() 함수의 리턴 값은 2차원 배열이다.

$pk = cubrid_schema($con, CUBRID_SCH_PRIMARY_KEY, "game");

if ($pk) {

    print_r($pk);

}

 

$fk = cubrid_schema($con, CUBRID_SCH_IMPORTED_KEYS, "game");

if ($fk) {

    print_r($fk);

}

에러 처리

에러가 발생하면 대부분의 PHP 인터페이스 함수는 에러 메시지를 출력하고 false나 -1을 반환한다. cubrid_error_msg(), cubrid_error_code() 그리고 cubrid_error_code_facility() 함수를 사용하면 각각 에러 메시지, 에러 코드, 에러 기능 코드를 확인할 수 있다.

cubrid_error_code_facility() 함수의 결과 값은 CUBRID_FACILITY_DBMS (DBMS 에러), CUBRID_FACILITY_CAS (CAS 서버 에러), CUBRID_FACILITY_CCI (CCI 에러), CUBRID_FACILITY_CLIENT (PHP 모듈 에러) 중 하나이다.