db2_connect
(PECL ibm_db2 >= 1.0.0)
db2_connect — 데이터베이스에 대한 연결을 반환합니다.
설명
db2_connect( string $database, string $username, string $password, array $options = ? ): resource
IBM DB2 Universal Database, IBM Cloudscape 또는 Apache Derby 데이터베이스에 대한 새 연결을 작성합니다.
매개변수
database
- 데이터베이스에 대한 카탈로그 연결의 경우
database
는 DB2 클라이언트 카탈로그의 데이터베이스 별칭을 나타냅니다.데이터베이스에 대한 카탈로그되지 않은 연결의 경우
database
는 다음 형식의 완전한 연결 문자열을 나타냅니다.DATABASE=database;HOSTNAME=hostname;PORT=port;PROTOCOL=TCPIP;UID=username;PWD=password;
여기서 매개변수는 다음 값을 나타냅니다.
database
- 데이터베이스의 이름입니다.
hostname
- 데이터베이스 서버의 호스트 이름 또는 IP 주소입니다.
port
- 데이터베이스가 요청을 수신하는 TCP/IP 포트입니다.
username
- 데이터베이스에 연결할 때 사용하는 사용자 이름입니다.
password
- 데이터베이스에 연결할 때 사용하는 암호입니다.
username
- 데이터베이스에 연결할 때 사용하는 사용자 이름입니다.
카탈로그되지 않은 연결의 경우
null
값 또는 빈 문자열을 전달해야 합니다. password
- 데이터베이스에 연결할 때 사용하는 암호입니다.
카탈로그되지 않은 연결의 경우
null
값 또는 빈 문자열을 전달해야 합니다. options
- 유효한 배열 키가 포함되는 연결 동작에 영향을 미치는 연결 옵션의 연관 배열:
autocommit
DB2_AUTOCOMMIT_ON
값을 전달하면 이 연결 핸들에 대한 자동 커밋이 켜집니다.DB2_AUTOCOMMIT_OFF
값을 전달하면 이 연결 핸들에 대한 자동 커밋이 해제됩니다.DB2_ATTR_CASE
DB2_CASE_NATURAL
값을 전달하면 열 이름이 자연 대소문자로 리턴되도록 지정됩니다.DB2_CASE_LOWER
값을 전달하면 열 이름이 소문자로 리턴되도록 지정합니다.DB2_CASE_UPPER
값을 전달하면 열 이름이 대문자로 리턴되도록 지정됩니다.CURSOR
DB2_FORWARD_ONLY
값을 전달하면 명령문 자원에 대해 전방 전용 커서가 지정됩니다. 이것은 기본 커서 유형이며 모든 데이터베이스 서버에서 지원됩니다.DB2_SCROLLABLE
값을 전달하면 명령문 자원에 대해 스크롤 가능한 커서가 지정됩니다. 이 모드는 결과 세트의 행에 대한 임의 액세스를 가능하게 하지만 현재는 IBM DB2 Universal Database에서만 지원됩니다.
다음 새 옵션은 ibm_db2 버전 1.7.0 이상에서 사용할 수 있습니다.
trustedcontext
- DB2_TRUSTED_CONTEXT_ENABLE 값을 전달하면 이 연결 핸들에 대해 신뢰할 수 있는 컨텍스트가 켜집니다. 이 매개변수는 db2_set_option()을 사용하여 설정할 수 없습니다.
이 키는 데이터베이스가 카탈로그된 경우(데이터베이스가 로컬인 경우에도) 또는 연결을 생성할 때 전체 DSN을 지정한 경우에만 작동합니다.
데이터베이스를 카탈로그화하려면 다음 명령을 사용하십시오.
db2 catalog tcpip node loopback remote <SERVERNAME> server <SERVICENAME> db2 catalog database <LOCALDBNAME> as <REMOTEDBNAME> at node loopback db2 "update dbm cfg using svcename <SERVICENAME>" db2set DB2COMM=TCPIP
다음 새 i5/OS 옵션은 ibm_db2 버전 1.5.1 이상에서 사용할 수 있습니다.
i5_lib
- 규정되지 않은 파일 참조를 분석하는 데 사용할 기본 라이브러리를 나타내는 문자 값입니다. 연결이 시스템 이름 지정 모드를 사용하는 경우에는 유효하지 않습니다.
i5_naming
DB2_I5_NAMING_ON
값은 DB2 UDB CLI iSeries 시스템 이름 지정 모드를 켭니다. 파일은 슬래시(/) 구분 기호를 사용하여 규정됩니다. 규정되지 않은 파일은 작업에 대한 라이브러리 목록을 사용하여 해결됩니다.DB2_I5_NAMING_OFF
값은 SQL 이름 지정인 DB2 UDB CLI 기본 이름 지정 모드를 끕니다. 파일은 마침표(.) 구분 기호를 사용하여 규정됩니다. 규정되지 않은 파일은 기본 라이브러리 또는 현재 사용자 ID를 사용하여 해석됩니다.i5_commit
i5_commit
속성은 db2_connect() 전에 설정해야 합니다. 연결이 설정된 후 값이 변경되고 원격 데이터 소스에 대한 연결인 경우 연결 핸들에 대해 다음에 db2_connect()가 성공할 때까지 변경 사항이 적용되지 않습니다.메모: php.ini 설정
ibm_db2.i5_allow_commit
==0 또는DB2_I5_TXN_NO_COMMIT
가 기본값이지만i5_commit
옵션으로 대체될 수 있습니다.DB2_I5_TXN_NO_COMMIT
- 확약 제어가 사용되지 않습니다.DB2_I5_TXN_READ_UNCOMMITTED
- 더러운 읽기, 반복 불가능한 읽기 및 팬텀이 가능합니다.DB2_I5_TXN_READ_COMMITTED
- 더티 읽기가 불가능합니다. 반복 불가능한 읽기 및 팬텀이 가능합니다.DB2_I5_TXN_REPEATABLE_READ
- 더티 읽기 및 반복 불가능한 읽기가 불가능합니다. 팬텀이 가능합니다.DB2_I5_TXN_SERIALIZABLE
- 트랜잭션을 직렬화할 수 있습니다. Dirty reads, non-repeatable reads 및 phantoms는 불가능합니다.i5_query_optimize
DB2_FIRST_IO
모든 쿼리는 가능한 한 빨리 출력의 첫 번째 페이지를 반환하는 것을 목표로 최적화되어 있습니다. 이 목표는 출력 데이터의 첫 페이지를 본 후 쿼리를 취소할 가능성이 가장 높은 사용자가 출력을 제어할 때 잘 작동합니다. OPTIMIZE FOR nnn ROWS 절로 코딩된 쿼리는 절에서 지정한 목표를 따릅니다.DB2_ALL_IO
모든 쿼리는 전체 쿼리를 실행하여 최단 시간 내에 완료되도록 최적화되었습니다. 쿼리 출력이 파일이나 보고서에 기록되거나 인터페이스가 출력 데이터를 대기열에 넣을 때 좋은 옵션입니다. OPTIMIZE FOR nnn ROWS 절로 코딩된 쿼리는 절에서 지정한 목표를 따릅니다. 이것이 기본값입니다.i5_dbcs_alloc
DB2_I5_DBCS_ALLOC_ON
값은 DBCS 변환 열 크기 증가를 위해 DB2 6X 할당 체계를 켭니다.DB2_I5_DBCS_ALLOC_OFF
값은 DBCS 변환 열 크기 증가에 대한 DB2 6X 할당 체계를 끕니다.참고: php.ini 설정
ibm_db2.i5_dbcs_alloc
==0 또는DB2_I5_DBCS_ALLOC_OFF
가 기본값이지만i5_dbcs_alloc
옵션으로 대체될 수 있습니다.i5_date_fmt
DB2_I5_FMT_ISO
- ISO(International Organization for Standardization) 날짜 형식 yyyy-mm-dd가 사용됩니다. 이것이 기본값입니다.DB2_I5_FMT_USA
- 미국 날짜 형식 mm/dd/yyyy가 사용됩니다.DB2_I5_FMT_EUR
- 유럽 날짜 형식 dd.mm.yyyy가 사용됩니다.DB2_I5_FMT_JIS
- 일본 산업 표준 날짜 형식 yyyy-mm-dd가 사용됩니다.DB2_I5_FMT_MDY
- 날짜 형식 mm/dd/yyyy가 사용됩니다.DB2_I5_FMT_DMY
- 날짜 형식 dd/mm/yyyy가 사용됩니다.DB2_I5_FMT_YMD
- 날짜 형식 yy/mm/dd가 사용됩니다.DB2_I5_FMT_JUL
- 율리우스력 날짜 형식 yy/ddd가 사용됩니다.DB2_I5_FMT_JOB
- 작업 기본값이 사용됩니다.i5_date_sep
DB2_I5_SEP_SLASH
- 슬래시( / )가 날짜 구분 기호로 사용됩니다. 이것이 기본값입니다.DB2_I5_SEP_DASH
- 대시( - )가 날짜 구분 기호로 사용됩니다.DB2_I5_SEP_PERIOD
- 마침표( . )가 날짜 구분 기호로 사용됩니다.DB2_I5_SEP_COMMA
- 쉼표( , )가 날짜 구분 기호로 사용됩니다.DB2_I5_SEP_BLANK
- 공백이 날짜 구분자로 사용됩니다.DB2_I5_SEP_JOB
- 작업 기본값이 사용됩니다.i5_time_fmt
DB2_I5_FMT_ISO
- ISO(International Organization for Standardization) 시간 형식 hh.mm.ss가 사용됩니다. 이것이 기본값입니다.DB2_I5_FMT_USA
- 미국 시간 형식 hh:mmxx가 사용됩니다. 여기서 xx는 AM 또는 PM입니다.DB2_I5_FMT_EUR
- 유럽 시간 형식 hh.mm.ss가 사용됩니다.DB2_I5_FMT_JIS
- 일본 산업 표준 시간 형식 hh:mm:ss가 사용됩니다.DB2_I5_FMT_HMS
- hh:mm:ss 형식이 사용됩니다.i5_time_sep
DB2_I5_SEP_COLON
- 콜론( : )이 시간 구분 기호로 사용됩니다. 이것이 기본값입니다.DB2_I5_SEP_PERIOD
- 마침표( . )가 시간 구분 기호로 사용됩니다.DB2_I5_SEP_COMMA
- 쉼표( , )가 시간 구분 기호로 사용됩니다.DB2_I5_SEP_BLANK
- 공백이 시간 구분자로 사용됩니다.DB2_I5_SEP_JOB
- 작업 기본값이 사용됩니다.i5_decimal_sep
DB2_I5_SEP_PERIOD
- 마침표( . )가 소수점 구분 기호로 사용됩니다. 이것이 기본값입니다.DB2_I5_SEP_COMMA
- 쉼표( , )가 소수점 구분 기호로 사용됩니다.DB2_I5_SEP_JOB
- 작업 기본값이 사용됩니다.
다음 새 i5/OS 옵션은 ibm_db2 버전 1.8.0 이상에서 사용할 수 있습니다.
i5_libl
- 규정되지 않은 파일 참조를 분석하는 데 사용할 라이브러리 목록을 나타내는 문자 값입니다. 공백 'i5_libl'=>"MYLIB YOURLIB ANYLIB"로 구분된 라이브러리 목록 요소를 지정하십시오.
메모:
i5_libl
은 i5/OS V5R4 이상에서만 사용할 수 있는 qsys2/qcmdexc('cmd',cmdlen)를 호출합니다.
반환 값
연결 시도가 성공하면 연결 핸들 리소스를 반환합니다. 연결 시도가 실패하면 db2_connect()가 false
를 리턴합니다.
Examples
예제 #1 카탈로그된 연결 만들기
카탈로그화된 연결을 사용하려면 DB2 명령행 처리기(CLP) 또는 DB2 구성 지원 프로그램을 통해 대상 데이터베이스를 이전에 카탈로그화해야 합니다.
<?php
$database = 'SAMPLE';
$user = 'db2inst1';
$password = 'ibmdb2';
$conn = db2_connect($database, $user, $password);
if ($conn) {
echo "Connection succeeded.";
db2_close($conn);
}
else {
echo "Connection failed.";
}
?>
위의 예는 다음을 출력합니다.
Connection succeeded.
예제 #2 카탈로그되지 않은 연결 만들기
카탈로그되지 않은 연결을 사용하면 데이터베이스에 동적으로 연결할 수 있습니다.
<?php
$database = 'SAMPLE';
$user = 'db2inst1';
$password = 'ibmdb2';
$hostname = 'localhost';
$port = 50000;
$conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;" .
"HOSTNAME=$hostname;PORT=$port;PROTOCOL=TCPIP;UID=$user;PWD=$password;";
$conn = db2_connect($conn_string, '', '');
if ($conn) {
echo "Connection succeeded.";
db2_close($conn);
}
else {
echo "Connection failed.";
}
?>
위의 예는 다음을 출력합니다.
Connection succeeded.
예제 #3 기본적으로 자동 커밋이 꺼져 있는 연결 만들기
db2_connect()에 옵션 배열을 전달하면 연결 핸들의 기본 동작을 수정할 수 있습니다.
<?php
$database = 'SAMPLE';
$user = 'db2inst1';
$password = 'ibmdb2';
$options = array('autocommit' => DB2_AUTOCOMMIT_OFF);
$conn = db2_connect($database, $user, $password, $options);
if ($conn) {
echo "Connection succeeded.\n";
if (db2_autocommit($conn)) {
echo "Autocommit is on.\n";
}
else {
echo "Autocommit is off.\n";
}
db2_close($conn);
}
else {
echo "Connection failed.";
}
?>
위의 예는 다음을 출력합니다.
Connection succeeded. Autocommit is off.
예제 #4 i5/OS 최고의 성능
i5/OS ibm_db2 1.5.1 PHP 애플리케이션에서 최상의 성능을 얻으려면 db2_connect()에 대한 기본 호스트, 사용자 ID 및 비밀번호를 사용하십시오.
<?php
$library = "ADC";
$i5 = db2_connect("", "", "", array("i5_lib"=>"qsys2"));
$result = db2_exec($i5,
"select * from systables where table_schema = '$library'");
while ($row = db2_fetch_both($result)) {
echo $row['TABLE_NAME']."</br>";
}
db2_close($i5);
?>
위의 예는 다음을 출력합니다.
ANIMALS NAMES PICTURES
예제 #5 신뢰할 수 있는 컨텍스트 사용
다음 예는 신뢰할 수 있는 컨텍스트를 활성화하고, 사용자를 전환하고, 현재 사용자 ID를 가져오는 방법을 보여줍니다.
<?php
$database = "SAMPLE";
$hostname = "localhost";
$port = 50000;
$authID = "db2inst1";
$auth_pass = "ibmdb2";
$tc_user = "tcuser";
$tc_pass = "tcpassword";
$dsn = "DATABASE=$database;HOSTNAME=$hostname;PORT=$port;
PROTOCOL=TCPIP;UID=$authID;PWD=$auth_pass;";
$options = array ("trustedcontext" => DB2_TRUSTED_CONTEXT_ENABLE);
$tc_conn = db2_connect($dsn, "", "", $options);
if($tc_conn) {
echo "Explicit trusted connection succeeded.\n";
if(db2_get_option($tc_conn, "trustedcontext")) {
$userBefore = db2_get_option($tc_conn, "trusted_user");
//Do some work as user 1.
//Switching to trusted user.
$parameters = array("trusted_user" => $tc_user,
"trusted_password" => $tcuser_pass);
$res = db2_set_option ($tc_conn, $parameters, 1);
$userAfter = db2_get_option($tc_conn, "trusted_user");
//Do more work as trusted user.
if($userBefore != $userAfter) {
echo "User has been switched." . "\n";
}
}
db2_close($tc_conn);
}
else {
echo "Explicit trusted connection failed.\n";
}
?>
위의 예는 다음을 출력합니다.
Explicit trusted connection succeeded. User has been switched.
기타
- db2_close() - 데이터베이스 연결을 닫습니다
- db2_pconnect() - 데이터베이스에 대한 지속적인 연결을 반환합니다.