PHP 8.1.0 RC 2 available for testing

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 с параметром SQL-выражения в ресурсе выражения, возвращаемом db2_prepare(). Эта функция даёт больший контроль над типом параметра, типом данных, точностью и масштабом для параметра, чем простая передача переменной как части необязательного входного массива в db2_execute().

Список параметров

stmt

Подготовленное выражение, возвращаемое db2_prepare().

parameter_number

Задаёт позицию параметра, которая нумеруется с 1, в подготовленном выражении.

variable_name

Строка, определяющая имя переменной PHP для привязки к параметру, заданному parameter_number.

parameter_type

Константа, определяющая, должна ли переменная PHP быть привязана к параметру SQL как входной параметр (DB2_PARAM_IN), выходной параметр (DB2_PARAM_OUT) или или как параметр, принимающий ввод и возвращающий вывод (DB2_PARAM_INOUT). Чтобы избежать перегрузки памяти, можно также указать DB2_PARAM_FILE, чтобы привязать переменную PHP к имени файла, содержащего данные большого объекта (BLOB, CLOB или DBCLOB).

data_type

Константа, указывающая тип данных SQL, с которым должна быть связана переменная PHP: DB2_BINARY, DB2_CHAR, DB2_DOUBLE или DB2_LONG.

precision

Задаёт точность, с которой переменная должна быть привязана к базе данных. Этот параметр также можно использовать для получения выходных значений XML из хранимых процедур. Неотрицательное значение указывает максимальный размер данных XML, которые будут извлечены из базы данных. Если этот параметр не используется, для получения выходного значения XML из хранимой процедуры предполагается значение по умолчанию 1 МБ.

scale

Задаёт масштаб, с которым переменная должна быть привязана к базе данных.

Возвращаемые значения

Возвращает true в случае успешного выполнения или false в случае возникновения ошибки.

Примеры

Пример #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() переменные должны быть связаны, а параметрам, принимающим ввод, должно быть присвоено любое значение. 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);

// Можно объявить переменную перед вызовом db2_bind_param()
$lower_limit 1;

db2_bind_param($stmt1"lower_limit"DB2_PARAM_IN);
db2_bind_param($stmt2"upper_limit"DB2_PARAM_IN);

// Также можно объявить переменную после вызова 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. параметр ввода-вывода (INOUT), который принимает имя второго животного в качестве входных данных и возвращает строку TRUE, если животное в базе данных совпадает с этим именем

  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($stmt1"name"DB2_PARAM_IN);
db2_bind_param($stmt2"second_name"DB2_PARAM_INOUT);
db2_bind_param($stmt3"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) напрямую из файла

Данные для больших объектов обычно хранятся в файлах, таких как документы 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($stmt1"picture"DB2_PARAM_FILE);
$rc db2_execute($stmt);
?>

Смотрите также

add a note add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top