db2_bind_param

(PECL ibm_db2 >= 1.0.0)

db2_bind_param — PHP 변수를 SQL 문 매개변수에 바인드


설명

db2_bind_param(
    resource $stmt,
    int $parameter_number,
    string $variable_name,
    int $parameter_type = ?,
    int $data_type = 0,
    int $precision = -1,
    int $scale = 0
): bool
                

PHP 변수를 db2_prepare()에 의해 리턴된 명령문 자원의 SQL문 매개변수에 바인드합니다. 이 함수를 사용하면 db2_execute()에 선택적 입력 배열의 일부로 변수를 단순히 전달하는 것보다 매개변수 유형, 데이터 유형, 정밀도 및 매개변수의 스케일을 더 많이 제어할 수 있습니다.


매개변수

stmt
db2_prepare()에서 리턴된 준비된 명령문.
parameter_number
준비된 명령문에서 매개변수의 1-인덱싱된 위치를 지정합니다.
variable_name
parameter_number로 지정된 매개변수에 바인딩할 PHP 변수의 이름을 지정하는 문자열입니다.
parameter_type
PHP 변수가 입력 매개변수(DB2_PARAM_IN), 출력 매개변수(DB2_PARAM_OUT) 또는 입력을 수락하고 출력을 리턴하는 매개변수(DB2_PARAM_INOUT)로 SQL 매개변수에 바인드되어야 하는지 여부를 지정하는 상수입니다. 메모리 오버헤드를 방지하기 위해 DB2_PARAM_FILE을 지정하여 PHP 변수를 대형 개체(BLOB, CLOB 또는 DBCLOB) 데이터가 포함된 파일의 이름에 바인딩할 수도 있습니다.
data_type
PHP 변수가 바인드되어야 하는 SQL 데이터 유형을 지정하는 상수: DB2_BINARY, DB2_CHAR, DB2_DOUBLE 또는 DB2_LONG 중 하나.
precision
변수가 데이터베이스에 바인드되어야 하는 정밀도를 지정합니다. 이 매개변수는 저장 프로시저에서 XML 출력 값을 검색하는 데에도 사용할 수 있습니다. 음수가 아닌 값은 데이터베이스에서 검색할 XML 데이터의 최대 크기를 지정합니다. 이 매개변수를 사용하지 않으면 저장 프로시저에서 XML 출력 값을 검색하는 데 기본값 1MB가 사용됩니다.
scale
변수가 데이터베이스에 바인드되어야 하는 척도를 지정합니다.

반환 값

성공하면 true를, 실패하면 false를 반환합니다.


Examples

예제 #1 PHP 변수를 준비된 문에 바인딩

다음 예의 SQL 문은 WHERE 절에 두 개의 입력 매개변수를 사용합니다. db2_bind_param()을 호출하여 두 개의 PHP 변수를 해당 SQL 매개변수에 바인드합니다. PHP 변수는 db2_bind_param()을 호출하기 전에 선언하거나 할당할 필요가 없습니다. 예에서 $lower_limit에는 db2_bind_param() 호출 전에 값이 지정되지만 $upper_limit에는 db2_bind_param() 호출 후에 값이 지정됩니다. 변수는 바인드되어야 하며 입력을 허용하는 매개변수의 경우 db2_execute()를 호출하기 전에 지정된 값이 있어야 합니다.

                  
<?php

$sql = 'SELECT name, breed, weight FROM animals
    WHERE weight > ? AND weight < ?';
$conn = db2_connect($database, $user, $password);
$stmt = db2_prepare($conn, $sql);

// We can declare the variable before calling db2_bind_param()
$lower_limit = 1;

db2_bind_param($stmt, 1, "lower_limit", DB2_PARAM_IN);
db2_bind_param($stmt, 2, "upper_limit", DB2_PARAM_IN);

// We can also declare the variable after calling db2_bind_param()
$upper_limit = 15.0;

if (db2_execute($stmt)) {
    while ($row = db2_fetch_array($stmt)) {
        print "{$row[0]}, {$row[1]}, {$row[2]}\n";
    }
}
?>
                  
                

위의 예는 다음을 출력합니다.

Pook, cat, 3.2
Rickety Ride, goat, 9.7
Peaches, dog, 12.3
                

예제 #2 IN 및 OUT 매개변수를 사용하여 저장 프로시저 호출

다음 예의 저장 프로시저 match_animal은 세 가지 다른 매개변수를 허용합니다.

  1. 첫 번째 동물의 이름을 입력으로 받아들이는 입력(IN) 매개변수
  2. 두 번째 동물의 이름을 입력으로 받아들이고 데이터베이스의 동물이 해당 이름과 일치하는 경우 문자열 TRUE를 반환하는 입력-출력(INOUT) 매개변수
  3. 식별된 두 동물의 무게 합계를 반환하는 출력(OUT) 매개변수

또한 저장 프로시저는 첫 번째 매개변수의 입력 값에 해당하는 동물에서 시작하여 두 번째 매개변수의 입력 값에 해당하는 동물에서 끝나는 알파벳 순서로 나열된 동물로 구성된 결과 집합을 반환합니다.

                 
<?php

$sql = 'CALL match_animal(?, ?, ?)';
$conn = db2_connect($database, $user, $password);
$stmt = db2_prepare($conn, $sql);

$name = "Peaches";
$second_name = "Rickety Ride";
$weight = 0;

db2_bind_param($stmt, 1, "name", DB2_PARAM_IN);
db2_bind_param($stmt, 2, "second_name", DB2_PARAM_INOUT);
db2_bind_param($stmt, 3, "weight", DB2_PARAM_OUT);

print "Values of bound parameters _before_ CALL:\n";
print "  1: {$name} 2: {$second_name} 3: {$weight}\n\n";

if (db2_execute($stmt)) {
    print "Values of bound parameters _after_ CALL:\n";
    print "  1: {$name} 2: {$second_name} 3: {$weight}\n\n";

    print "Results:\n";
    while ($row = db2_fetch_array($stmt)) {
        print "  {$row[0]}, {$row[1]}, {$row[2]}\n";
    }
}
?>
                 
               

위의 예는 다음을 출력합니다.

Values of bound parameters _before_ CALL:
  1: Peaches 2: Rickety Ride 3: 0

Values of bound parameters _after_ CALL:
  1: Peaches 2: TRUE 3: 22

Results:
  Peaches, dog, 12.3
  Pook, cat, 3.2
  Rickety Ride, goat, 9.7
               

예제 #3 파일에서 직접 BLOB(Binary Large Object) 삽입

큰 개체에 대한 데이터는 일반적으로 XML 문서나 오디오 파일과 같은 파일에 저장됩니다. 전체 파일을 PHP 변수로 읽은 다음 해당 PHP 변수를 SQL 문에 바인딩하는 대신 파일을 SQL 문의 입력 매개변수에 직접 바인딩하여 일부 메모리 오버헤드를 피할 수 있습니다. 다음 예는 파일을 BLOB 열에 직접 바인딩하는 방법을 보여줍니다.

                
<?php
$stmt = db2_prepare($conn, "INSERT INTO animal_pictures(picture) VALUES (?)");

$picture = "/opt/albums/spook/grooming.jpg";
$rc = db2_bind_param($stmt, 1, "picture", DB2_PARAM_FILE);
$rc = db2_execute($stmt);
?>
                
              

기타