db2_set_option
(PECL ibm_db2 >= 1.0.0)
db2_set_option — 연결 또는 명령문 자원에 대한 옵션 설정
설명
db2_set_option(resource $resource
, array $options
, int $type
): bool
명령문 리소스 또는 연결 리소스에 대한 옵션을 설정합니다. 결과 집합 리소스에 대한 옵션을 설정할 수 없습니다.
매개변수
resource
- db2_prepare()에서 리턴된 유효한 명령문 자원 또는 db2_connect() 또는 db2_pconnect()에서 리턴된 유효한 연결 자원.
options
- 유효한 명령문 또는 연결 옵션을 포함하는 연관 배열입니다. 이 매개변수는 자동 커밋 값, 커서 유형(스크롤 가능 또는 앞으로)을 변경하고 결과 세트에 나타날 열 이름(하위, 상위 또는 자연)의 대소문자를 지정하는 데 사용할 수 있습니다.
autocommit
DB2_AUTOCOMMIT_ON
을 전달하면 지정된 연결 리소스에 대한 자동 커밋이 켜집니다.DB2_AUTOCOMMIT_OFF
를 전달하면 지정된 연결 리소스에 대한 자동 커밋이 해제됩니다.cursor
DB2_FORWARD_ONLY
를 전달하면 명령문 자원에 대해 정방향 전용 커서가 지정됩니다. 이것은 기본 커서 유형이며 모든 데이터베이스 서버에서 지원됩니다.DB2_SCROLLABLE
을 전달하면 명령문 자원에 대해 스크롤 가능한 커서가 지정됩니다. 스크롤 가능한 커서를 사용하면 결과 집합 행에 비순차적 순서로 액세스할 수 있지만 IBM DB2 Universal Database 데이터베이스에서만 지원됩니다.binmode
DB2_BINARY
를 전달하면 이진 데이터가 있는 그대로 반환됩니다. 이것은 기본 모드입니다. 이는 php.ini에서ibm_db2.binmode=1
을 설정하는 것과 동일합니다.DB2_CONVERT
를 전달하면 2진 데이터가 16진 인코딩으로 변환되고 그대로 리턴됩니다. 이는 php.ini에서ibm_db2.binmode=2
를 설정하는 것과 동일합니다.DB2_PASSTHRU
를 전달하면 2진 데이터가null
로 변환됨을 지정합니다. 이는 php.ini에서ibm_db2.binmode=3
을 설정하는 것과 동일합니다.db2_attr_case
DB2_CASE_LOWER
를 전달하면 결과 세트의 열 이름이 소문자로 리턴되도록 지정됩니다.DB2_CASE_UPPER
를 전달하면 결과 집합의 열 이름이 대문자로 반환되도록 지정합니다.DB2_CASE_NATURAL
을 전달하면 결과 세트의 열 이름이 자연 대소문자로 리턴되도록 지정합니다.deferred_prepare
DB2_DEFERRED_PREPARE_ON
을 전달하면 지정된 명령문 자원에 대해 지연된 준비가 켜집니다.DB2_DEFERRED_PREPARE_OFF
를 전달하면 지정된 명령문 자원에 대한 지연된 준비가 해제됩니다.
다음 새 i5/OS 옵션은 ibm_db2 버전 1.5.1 이상에서 사용할 수 있습니다. 이 옵션은 기본적으로 i5 시스템에서 PHP 및 ibm_db2를 실행할 때만 적용됩니다.
i5_fetch_only
DB2_I5_FETCH_ON
- 커서는 읽기 전용이며 위치 지정 업데이트 또는 삭제에 사용할 수 없습니다.SQL_ATTR_FOR_FETCH_ONLY
환경이SQL_FALSE
로 설정되지 않은 경우 기본값입니다.DB2_I5_FETCH_OFF
- 위치 지정 업데이트 및 삭제에 커서를 사용할 수 있습니다.
다음 새 옵션은 ibm_db2 버전 1.8.0 이상에서 사용할 수 있습니다.
rowcount
DB2_ROWCOUNT_PREFETCH_ON
- 클라이언트는 가져오기 전에 전체 행 수를 요청할 수 있습니다. 즉, db2_num_rows()는ROLLFORWARD_ONLY
커서가 사용되는 경우에도 선택한 행 수를 리턴합니다.DB2_ROWCOUNT_PREFETCH_OFF
- 클라이언트가 가져오기 전에 전체 행 수를 요청할 수 없습니다.
다음 새 옵션은 ibm_db2 버전 1.7.0 이상에서 사용할 수 있습니다.
trusted_user
- 사용자를 신뢰할 수 있는 사용자로 전환하려면 신뢰할 수 있는 사용자의 사용자 ID(문자열)를 이 키 값으로 전달합니다. 이 옵션은 연결 리소스에만 설정할 수 있습니다. 이 옵션을 사용하려면 연결 리소스에서 신뢰할 수 있는 컨텍스트를 활성화해야 합니다.
trusted_password
- Trusted_user 키로 지정된 사용자에 해당하는 암호(문자열)입니다.
다음 새 옵션은 ibm_db2 버전 1.6.0 이상에서 사용할 수 있습니다. 이러한 옵션은 db2_get_option()을 사용하여 실행하는 동안 액세스할 수 있는 유용한 추적 정보를 제공합니다.
메모:
각 옵션의 값을 설정할 때 일부 서버는 제공된 전체 길이를 처리하지 못하고 값이 잘릴 수 있습니다.
각 옵션에 지정된 데이터가 호스트 시스템으로 전송될 때 올바르게 변환되도록 하려면 문자 A~Z, 0~9, 밑줄(_) 또는 마침표(.)만 사용하십시오.
userid
SQL_ATTR_INFO_USERID
- DB2 Connect를 사용할 때 호스트 데이터베이스 서버로 보낸 클라이언트 사용자 ID를 식별하는 데 사용되는 널 종료 문자열에 대한 포인터.메모: z/OS 및 OS/390용 DB2 서버는 최대 16자 길이를 지원합니다. 이 사용자 ID는 인증 사용자 ID와 혼동되어서는 안 되며 식별 목적으로만 사용되며 권한 부여에는 사용되지 않습니다.
acctstr
SQL_ATTR_INFO_ACCTSTR
- DB2 Connect를 사용할 때 호스트 데이터베이스 서버에 전송된 클라이언트 계정 문자열을 식별하는 데 사용되는 null로 끝나는 문자열에 대한 포인터입니다.메모: z/OS 및 OS/390용 DB2 서버는 최대 200자 길이를 지원합니다.
applname
SQL_ATTR_INFO_APPLNAME
- DB2 Connect를 사용할 때 호스트 데이터베이스 서버에 전송된 클라이언트 응용 프로그램 이름을 식별하는 데 사용되는 null로 끝나는 문자열에 대한 포인터입니다.메모: z/OS 및 OS/390용 DB2 서버는 최대 32자 길이를 지원합니다.
wrkstnname
SQL_ATTR_INFO_WRKSTNNAME
- DB2 Connect를 사용할 때 호스트 데이터베이스 서버에 보낸 클라이언트 워크스테이션 이름을 식별하는 데 사용되는 널 종료 문자열에 대한 포인터.메모: z/OS 및 OS/390용 DB2 서버는 최대 18자 길이를 지원합니다.
type
- 함수에 전달된 리소스 유형을 지정하는 정수 값입니다. 리소스 유형과 이 값은 일치해야 합니다.
값으로
1
을 전달하면 연결 리소스가 함수에 전달되었음을 지정합니다.값으로
1
이 아닌 정수를 전달하면 명령문 자원이 함수에 전달되었음을 지정합니다.
다음 표에서는 사용 가능한 리소스 유형과 호환되는 옵션을 지정합니다.
자원-매개변수 매트릭스
Key | Value | Resource Type | ||
---|---|---|---|---|
Connection | Statement | Result Set | ||
autocommit | DB2_AUTOCOMMIT_ON |
X | - | - |
autocommit | DB2_AUTOCOMMIT_OFF |
X | - | - |
cursor | DB2_SCROLLABLE |
- | X | - |
cursor | DB2_FORWARD_ONLY |
- | X | - |
binmode | DB2_BINARY |
X | X | - |
binmode | DB2_CONVERT |
X | X | - |
binmode | DB2_PASSTHRU |
X | X | - |
db2_attr_case | DB2_CASE_LOWER |
X | X | - |
db2_attr_case | DB2_CASE_UPPER |
X | X | - |
db2_attr_case | DB2_CASE_NATURAL |
X | X | - |
deferred_prepare | DB2_DEFERRED_PREPARE_ON |
- | X | - |
deferred_prepare | DB2_DEFERRED_PREPARE_OFF |
- | X | - |
i5_fetch_only | DB2_I5_FETCH_ON |
- | X | - |
i5_fetch_only | DB2_I5_FETCH_OFF |
- | X | - |
rowcount | DB2_ROWCOUNT_PREFETCH_ON |
- | X | - |
rowcount | DB2_ROWCOUNT_PREFETCH_OFF |
- | X | - |
trusted_user | <USER NAME> (String) |
X | - | - |
trusted_password | <PASSWORD> (String) |
X | - | - |
userid | SQL_ATTR_INFO_USERID |
X | X | - |
acctstr | SQL_ATTR_INFO_ACCTSTR |
X | X | - |
applname | SQL_ATTR_INFO_APPLNAME |
X | X | - |
wrkstnname | SQL_ATTR_INFO_WRKSTNNAME |
X | X | - |
반환 값
성공하면 true
를, 실패하면 false
를 반환합니다.
Examples
예제 #1 연결 리소스로 하나의 매개변수 설정
다음 예에서는 AUTOCOMMIT를 끈 상태에서 생성된 연결을 db2_autocommit() 함수로 테스트합니다.
<?php
/* Database Connection Parameters */
$database = 'SAMPLE';
$hostname = 'localhost';
$port = 50000;
$protocol = 'TCPIP';
$username = 'db2inst1';
$password = 'ibmdb2';
/* Connection String */
$conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;";
$conn_string .= "HOSTNAME=$hostname;PORT=$port;PROTOCOL=$protocol;";
$conn_string .= "UID=$username;PWD=$password;";
/* Obtain Connection Resource */
$conn = db2_connect($conn_string, '', '');
/* Create the associative options array with valid key-value pairs */
$options = array('autocommit' => DB2_AUTOCOMMIT_ON);
/* Call the function using the correct resource, options array, and type values */
$result = db2_set_option($conn, $options, 1);
/* Check if all options could be set correctly */
if($result)
{
echo 'Options Set Successfully';
}
else
{
echo 'Could Not Set Options';
}
?>
위의 예는 다음을 출력합니다.
Options Set Successfully
예제 #2 연결 리소스로 여러 매개변수 설정
<?php
/* Database Connection Parameters */
$database = 'SAMPLE';
$hostname = 'localhost';
$port = 50000;
$protocol = 'TCPIP';
$username = 'db2inst1';
$password = 'ibmdb2';
/* Connection String */
$conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;";
$conn_string .= "HOSTNAME=$hostname;PORT=$port;PROTOCOL=$protocol;";
$conn_string .= "UID=$username;PWD=$password;";
/* Obtain Connection Resource */
$conn = db2_connect($conn_string, '', '');
/* Create the associative options array with valid key-value pairs */
$options = array('autocommit' => DB2_AUTOCOMMIT_OFF,
'binmode' => DB2_PASSTHRU,
'db2_attr_case' => DB2_CASE_UPPER,
'cursor' => DB2_SCROLLABLE);
/* Call the function using the correct resource, options array, and type values */
$result = db2_set_option($conn, $options, 1);
/* Check if all options could be set correctly */
if($result)
{
echo 'Options Set Successfully';
}
else
{
echo 'Could Not Set Options';
}
?>
위의 예는 다음을 출력합니다.
Options Set Successfully
예제 #3 유효하지 않은 키로 여러 매개변수 설정하기
<?php
/* Database Connection Parameters */
$database = 'SAMPLE';
$hostname = 'localhost';
$port = 50000;
$protocol = 'TCPIP';
$username = 'db2inst1';
$password = 'ibmdb2';
/* Connection String */
$conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;";
$conn_string .= "HOSTNAME=$hostname;PORT=$port;PROTOCOL=$protocol;";
$conn_string .= "UID=$username;PWD=$password;";
/* Obtain Connection Resource */
$conn = db2_connect($conn_string, '', '');
/* Create the associative options array with valid key-value pairs */
$options = array('autocommit' => DB2_AUTOCOMMIT_OFF,
'MY_INVALID_KEY' => DB2_PASSTHRU,
'db2_attr_case' => DB2_CASE_UPPER,
'cursor' => DB2_SCROLLABLE);
/* Call the function using the correct resource, options array, and type values */
$result = db2_set_option($conn, $options, 1);
/* Check if all options could be set correctly */
if($result)
{
echo 'Options Set Successfully';
}
else
{
echo 'Could Not Set Options';
}
?>
위의 예는 다음을 출력합니다.
Could Not Set Options
예제 #4 잘못된 값으로 여러 매개변수 설정하기
<?php
/* Database Connection Parameters */
$database = 'SAMPLE';
$hostname = 'localhost';
$port = 50000;
$protocol = 'TCPIP';
$username = 'db2inst1';
$password = 'ibmdb2';
/* Connection String */
$conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;";
$conn_string .= "HOSTNAME=$hostname;PORT=$port;PROTOCOL=$protocol;";
$conn_string .= "UID=$username;PWD=$password;";
/* Obtain Connection Resource */
$conn = db2_connect($conn_string, '', '');
/* Create the associative options array with valid key-value pairs */
$options = array('autocommit' => DB2_AUTOCOMMIT_OFF,
'binmode' => 'INVALID_VALUE',
'db2_attr_case' => DB2_CASE_UPPER,
'cursor' => DB2_SCROLLABLE);
/* Call the function using the correct resource, options array, and type values */
$result = db2_set_option($conn, $options, 1);
/* Check if all options could be set correctly */
if($result)
{
echo 'Options Set Successfully';
}
else
{
echo 'Could Not Set Options';
}
?>
위의 예는 다음을 출력합니다.
Could Not Set Options
예제 #5 연결 리소스와 잘못된 유형으로 여러 매개변수 설정
<?php
/* Database Connection Parameters */
$database = 'SAMPLE';
$hostname = 'localhost';
$port = 50000;
$protocol = 'TCPIP';
$username = 'db2inst1';
$password = 'ibmdb2';
/* Connection String */
$conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;";
$conn_string .= "HOSTNAME=$hostname;PORT=$port;PROTOCOL=$protocol;";
$conn_string .= "UID=$username;PWD=$password;";
/* Obtain Connection Resource */
$conn = db2_connect($conn_string, '', '');
/* Create the associative options array with valid key-value pairs */
$options = array('autocommit' => DB2_AUTOCOMMIT_OFF,
'binmode' => DB2_PASSTHRU,
'db2_attr_case' => DB2_CASE_UPPER,
'cursor' => DB2_SCROLLABLE);
/* Call the function using the correct resource, options array, and the wrong type value */
$result = db2_set_option($conn, $options, 2);
/* Check if all options could be set correctly */
if($result)
{
echo 'Options Set Successfully';
}
else
{
echo 'Could Not Set Options';
}
?>
위의 예는 다음을 출력합니다.
Could Not Set Options
예제 #6 잘못된 리소스로 여러 매개변수 설정하기
<?php
/* Database Connection Parameters */
$database = 'SAMPLE';
$hostname = 'localhost';
$port = 50000;
$protocol = 'TCPIP';
$username = 'db2inst1';
$password = 'ibmdb2';
/* Connection String */
$conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;";
$conn_string .= "HOSTNAME=$hostname;PORT=$port;PROTOCOL=$protocol;";
$conn_string .= "UID=$username;PWD=$password;";
/* Obtain Connection Resource */
$conn = db2_connect($conn_string, '', '');
/* Create the associative options array with valid key-value pairs */
$options = array('autocommit' => DB2_AUTOCOMMIT_OFF,
'binmode' => DB2_PASSTHRU,
'db2_attr_case' => DB2_CASE_UPPER,
'cursor' => DB2_SCROLLABLE);
$stmt = db2_prepare($conn, 'SELECT * FROM EMPLOYEE');
/* Call the function using the wrong resource, and the correct options array, and type values */
$result = db2_set_option($stmt, $options, 1);
/* Check if all options could be set correctly */
if($result)
{
echo 'Options Set Successfully';
}
else
{
echo 'Could Not Set Options';
}
?>
위의 예는 다음을 출력합니다.
Could Not Set Options
예제 #7 모두 합치기
<?php
/* Database Connection Parameters */
$database = 'SAMPLE';
$hostname = 'localhost';
$port = 50000;
$protocol = 'TCPIP';
$username = 'db2inst1';
$password = 'ibmdb2';
/* Connection String */
$conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;";
$conn_string .= "HOSTNAME=$hostname;PORT=$port;PROTOCOL=$protocol;";
$conn_string .= "UID=$username;PWD=$password;";
/* Obtain Connection Resource */
$conn = db2_connect($conn_string, '', '');
/* Create the associative options array with valid key-value pairs */
$options = array('db2_attr_case' => DB2_CASE_LOWER,
'cursor' => DB2_SCROLLABLE);
$stmt = db2_prepare($conn, 'SELECT * FROM EMPLOYEE WHERE EMPNO = ? OR EMPNO = ?');
/* Call the function using the correct resource, options array, and type values */
$option_result = db2_set_option($stmt, $options, 2);
$result = db2_execute($stmt, array('000130', '000140'));
/* Get Row 2 before Row 1 since Scrollable Cursor */
print_r(db2_fetch_assoc($stmt, 2));
print '<br /><br />';
print_r(db2_fetch_assoc($stmt, 1));
?>
위의 예는 다음을 출력합니다.
Array ( [empno] => 000140 [firstnme] => HEATHER [midinit] => A [lastname] => NICHOLLS [workdept] => C01 [phoneno] => 1793 [hiredate] => 1976-12-15 [job] => ANALYST [edlevel] => 18 [sex] => F [birthdate] => 1946-01-19 [salary] => 28420.00 [bonus] => 600.00 [comm] => 2274.00 ) Array ( [empno] => 000130 [firstnme] => DELORES [midinit] => M [lastname] => QUINTANA [workdept] => C01 [phoneno] => 4578 [hiredate] => 1971-07-28 [job] => ANALYST [edlevel] => 16 [sex] => F [birthdate] => 1925-09-15 [salary] => 23800.00 [bonus] => 500.00 [comm] => 1904.00 )
예제 #8 i5/OS 커서는 읽기 전용입니다.
<?php
$conn = db2_connect("", "", "", array("i5_lib"=>"nobody"));
$stmt = db2_prepare($conn, 'select * from names where first = ?');
$name = "first2";
db2_bind_param($stmt, 1, "name", DB2_PARAM_IN);
$options = array("i5_fetch_only"=>DB2_I5_FETCH_ON);
db2_set_option($stmt,$options,0);
if (db2_execute($stmt)) {
while ($row = db2_fetch_array($stmt)) {
echo "{$row[0]} {$row[1]}";
}
}
?>
위의 예는 다음을 출력합니다.
first2 last2
기타
- db2_connect() - 데이터베이스에 대한 연결을 반환합니다.
- db2_pconnect() - 데이터베이스에 대한 지속적인 연결을 반환합니다.
- db2_exec() - SQL 문을 직접 실행
- db2_prepare() - 실행할 SQL 문을 준비합니다.
- db2_cursor_type() - 명령문 리소스에서 사용하는 커서 유형을 반환합니다.