CUBRID Functions (PDO_CUBRID)

소개

PDO_CUBRID는 PHP에서 CUBRID 데이터베이스로의 접근을 가능하게 하는 PHP 데이터 객체(PDO) 인터페이스를 구현한 드라이버이다.

메모: 현재 버전의 PDO_CUBRID는 현재 영구 연결을 지원하지 않습니다.


설치

PDO_CUBRID 확장을 구축하기 위해서는 PHP와 동일한 시스템에 CUBRID DBMS가 설치되어 있어야 한다. PDO_CUBRID는 » PECL 확장이므로 PECL 확장 설치의 지침에 따라 PDO_CUBRID 확장을 설치하세요. 다음과 같이 CUBRID 기본 디렉토리의 위치를 ​​가리키도록 configure 명령을 실행한다.

$ ./configure --with-pdo-cubrid=/path/to/CUBRID[,shared]
                

configure 명령어는 기본적으로 CUBRID 환경 변수 값을 사용한다.

PECL 확장에 대한 DLL은 현재 사용할 수 없습니다. Windows 시스템에 설치 섹션도 참조하십시오.


특징

PDO_CUBRID 특징

Feature 설명
스크롤 가능한 커서 PDO_CUBRID는 스크롤 가능한 커서를 지원합니다. 기본 커서 유형은 정방향 전용이며 PDO::prepare()의 매개변수 driver_options를 사용하여 커서 유형을 변경할 수 있습니다.
Timeout PDO_CUBRID는 SQL 문 실행 시간 초과 설정을 지원합니다. PDO::setAttribute()를 사용하여 시간 초과 값을 설정할 수 있습니다.
Autocommit_mode and Transaction PDO_CUBRID는 autocommit_mode와 transaction을 모두 지원하며 autocommit_mode는 기본적으로 활성화되어 있습니다. PDO::setAttribute()를 사용하여 상태를 변경할 수 있습니다.

PDO::beginTransaction()을 사용하여 트랜잭션을 시작하면 autocommit_mode가 자동으로 비활성화되고 PDO::commit() 또는 PDO::rollBack() 후에 복원됩니다. autocommit_mode를 비활성화하기 전에 보류 중인 작업이 자동으로 커밋됩니다.

Multiple SQL Statements PDO_CUBRID는 다중 SQL 문을 지원합니다. 여러 SQL 문은 세미콜론(;)으로 구분됩니다.
Schema Information PDO_CUBRID는 스키마 정보를 얻기 위해 PDO::cubrid_schema() 함수를 구현합니다.
LOBs PDO_CUBRID는 BLOB/CLOB 데이터 타입을 지원합니다. PDO의 LOB는 스트림으로 표현되므로 스트림을 바인딩하여 LOB를 삽입하고 CUBRID PDO에서 반환된 스트림을 읽어 LOB를 얻을 수 있습니다. 예를 들어:

예제 #1 CUBRID PDO에 LOB 삽입

                          
<?php
$fp = fopen('lob_test.png', 'rb');

$sql_stmt = "INSERT INTO lob_test(name, content) VALUES('lob_test.png', ?)";

$stmt = $dbh->prepare($sql_stmt);
$ret = $stmt->bindParam(1, $fp, PDO::PARAM_LOB);
$ret = $stmt->execute();
?>
                          
                        

예제 #2 CUBRID PDO에서 LOB 가져오기

                          
<?php
$sql_stmt = "SELECT content FROM lob_test WHERE name='lob_test.png'";

$stmt = $dbh->prepare($sql_stmt);
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_NUM);

header("Content-Type: image/png");
fpassthru($result[0]);
?>
                          
                        
Column meta CUBRID PDO의 PDOStatement::getColumnMeta()는 다음 값을 포함하는 연관 배열을 반환합니다.
  • type
  • name
  • table
  • def
  • precision
  • scale
  • not_null
  • auto_increment
  • unique_key
  • multiple_key
  • primary_key
  • foreign_key
  • reverse_index
  • reverse_unique
Collection Data Type PDO_CUBRID는 SET/MULTISET/SEQUENCE 데이터 타입을 지원한다. 데이터 유형을 지정하지 않으면 기본 데이터 유형은 char입니다. 예를 들면 다음과 같습니다.

예제 #3 기본 데이터 유형으로 CUBRID PDO에 세트를 삽입합니다.

                          
<?php
$conn_str ="cubrid:dbname=demodb;host=localhost;port=33000";
$cubrid_pdo = new PDO($conn_str, 'dba', '');

$cubrid_pdo->exec("DROP TABLE if exists test_tbl");
$cubrid_pdo->exec("CREATE TABLE test_tbl (col_1 SET(VARCHAR))");

$sql_stmt_insert = "INSERT INTO test_tbl VALUES (?);";
$stmt = $cubrid_pdo->prepare($sql_stmt_insert);
$data = array("abc","def","ghi");
$ret = $stmt->bindParam(1, $data, PDO::PARAM_NULL);
$ret = $stmt->execute();
var_Dump($ret);
?>
                          
                        

예제 #4 CUBRID PDO에서 삽입 설정 시 데이터 타입 지정

                          
<?php
$conn_str ="cubrid:dbname=demodb;host=localhost;port=33000";
$cubrid_pdo = new PDO($conn_str, 'dba', '');

$cubrid_pdo->exec("DROP TABLE if exists test_tbl");
$cubrid_pdo->exec("CREATE TABLE test_tbl (col_1 SET(int))");

$sql_stmt_insert = "INSERT INTO test_tbl VALUES (?);";
$stmt = $cubrid_pdo->prepare($sql_stmt_insert);
$data = array(1,2,3,4);
$ret = $stmt->bindParam(1, $data, 0,0,"int");
$ret = $stmt->execute();
var_Dump($ret);
?>
                          
                        

CUBRID 바인딩 데이터 유형:(PDOStatement::bindParam의 다섯 번째 매개변수):

  • CHAR
  • STRING
  • NCHAR
  • VARNCHAR
  • BIT
  • VARBIT
  • NUMERIC
  • NUMBER
  • INT
  • SHORT
  • BIGINT
  • MONETARY
  • FLOAT
  • DOUBLE
  • DATE
  • TIME
  • DATETIME
  • TIMESTAMP

미리 정의된 상수

아래 상수는 이 드라이버에 의해 정의되며 확장이 PHP로 컴파일되거나 런타임에 동적으로 로드된 경우에만 사용할 수 있습니다. 또한 이러한 드라이버별 상수는 이 드라이버를 사용하는 경우에만 사용해야 합니다. 다른 드라이버와 함께 드라이버별 속성을 사용하면 예기치 않은 동작이 발생할 수 있습니다. 코드가 여러 드라이버에 대해 실행될 수 있는 경우 PDO::getAttribute()를 사용하여 드라이버를 확인하기 위해 PDO::ATTR_DRIVER_NAME 속성을 얻을 수 있습니다.

데이터베이스 속성을 설정할 때 다음 상수를 사용할 수 있습니다. PDO::getAttribute() 또는 PDO::setAttribute()에 전달할 수 있습니다.

PDO::CUBRID 속성 플래그

상수 설명
PDO::CUBRID_ATTR_ISOLATION_LEVEL 데이터베이스 연결에 대한 트랜잭션 격리 수준입니다.
PDO::CUBRID_ATTR_LOCK_TIMEOUT 트랜잭션 시간 초과(초)입니다.
PDO::CUBRID_ATTR_MAX_STRING_LENGTH 읽기 전용. CUBRID PDO API 사용 시 bit, varbit, char, varchar, nchar, nchar 가변 데이터 타입의 최대 문자열 길이.

트랜잭션 격리 수준을 설정할 때 다음 상수를 사용할 수 있습니다. 그것들은 PDO::getAttribute()에 전달되거나 PDO::setAttribute()에 의해 반환될 수 있습니다.

PDO::CUBRID 격리 수준 플래그

상수 설명
PDO::TRAN_COMMIT_CLASS_UNCOMMIT_INSTANCE 가장 낮은 격리 수준(1). 튜플에 대해 더티, 반복 불가능 또는 팬텀 읽기가 발생할 수 있으며 테이블에 대해서도 반복 불가능 읽기가 발생할 수 있습니다.
PDO::TRAN_COMMIT_CLASS_COMMIT_INSTANCE 상대적으로 낮은 격리 수준(2). 더티 읽기는 발생하지 않지만 반복 불가능하거나 팬텀 읽기가 발생할 수 있습니다.
PDO::TRAN_REP_CLASS_UNCOMMIT_INSTANCE CUBRID(3)의 기본 격리. 튜플에 대해 더티, 반복 불가능 또는 팬텀 읽기가 발생할 수 있지만 테이블에 대해 반복 가능한 읽기가 보장됩니다.
PDO::TRAN_REP_CLASS_COMMIT_INSTANCE 상대적으로 낮은 격리 수준(4). 더티 읽기는 발생하지 않지만 반복 불가능하거나 팬텀 읽기가 발생할 수 있습니다.
PDO::TRAN_REP_CLASS_REP_INSTANCE 비교적 높은 격리 수준(5). 더럽거나 반복 불가능한 읽기는 발생하지 않지만 팬텀 읽기는 발생할 수 있습니다.
PDO::TRAN_SERIALIZABLE 가장 높은 격리 수준(6). 동시성에 관한 문제(예: 더티 읽기, 비반복 읽기, 팬텀 읽기 등)는 발생하지 않습니다.

스키마 정보를 가져올 때 다음 상수를 사용할 수 있습니다. PDO::cubrid_schema()로 전달할 수 있다.

PDO::CUBRID 스키마 플래그

상수 설명
PDO::CUBRID_SCH_TABLE CUBRID에서 테이블의 이름과 유형을 가져옵니다.
PDO::CUBRID_SCH_VIEW CUBRID에서 뷰의 이름과 유형을 가져옵니다.
PDO::CUBRID_SCH_QUERY_SPEC 보기의 쿼리 정의를 가져옵니다.
PDO::CUBRID_SCH_ATTRIBUTE 테이블 열의 속성을 가져옵니다.
PDO::CUBRID_SCH_TABLE_ATTRIBUTE 테이블의 속성을 가져옵니다.
PDO::CUBRID_SCH_METHOD 인스턴스 메서드를 가져옵니다. 인스턴스 메소드는 클래스 인스턴스에 의해 호출되는 메소드입니다. 대부분의 작업이 인스턴스에서 실행되기 때문에 클래스 메서드보다 더 자주 사용됩니다.
PDO::CUBRID_SCH_TABLE_METHOD 클래스 메서드를 가져옵니다. 클래스 메소드는 클래스 객체에 의해 호출되는 메소드입니다. 일반적으로 새 클래스 인스턴스를 생성하거나 초기화하는 데 사용됩니다. 또한 클래스 속성에 액세스하거나 업데이트하는 데 사용됩니다.
PDO::CUBRID_SCH_METHOD_FILE 테이블의 메소드가 정의된 파일의 정보를 가져옵니다.
PDO::CUBRID_SCH_SUPER_TABLE 테이블이 속성을 상속하는 테이블의 이름과 유형을 가져옵니다.
PDO::CUBRID_SCH_SUB_TABLE 이 테이블에서 속성을 상속하는 테이블의 이름과 유형을 가져옵니다.
PDO::CUBRID_SCH_CONSTRAINT 테이블 제약 조건을 가져옵니다.
PDO::CUBRID_SCH_TRIGGER 테이블 트리거를 가져옵니다.
PDO::CUBRID_SCH_TABLE_PRIVILEGE 테이블의 권한 정보를 가져옵니다.
PDO::CUBRID_SCH_COL_PRIVILEGE 열의 권한 정보를 가져옵니다.
PDO::CUBRID_SCH_DIRECT_SUPER_TABLE 테이블의 직접 슈퍼 테이블을 가져옵니다.
PDO::CUBRID_SCH_PRIMARY_KEY 테이블 기본 키를 가져옵니다.
PDO::CUBRID_SCH_IMPORTED_KEYS 테이블의 가져온 키를 가져옵니다.
PDO::CUBRID_SCH_EXPORTED_KEYS 테이블의 내보낸 키를 가져옵니다.
PDO::CUBRID_SCH_CROSS_REFERENCE 견인 테이블의 참조 관계를 가져옵니다.

목차